首页 文章

将django应用程序发布到azure时出现服务器错误

提问于
浏览
1

我正在尝试使用MSSQL服务器将我的django应用程序发布到azure . 我正在使用django-azure-pyodbc和pyodbc进行连接,当它在本地工作时,每当我使用mssql发布时,我都会收到内部服务器错误,尽管发布成功 . 如果我使用预先打包的sqllite3服务器发布,它可以正常工作 . 我使用的是Python 3.4,Django 1.8.4,pyodbc 3.0.10和django-pyodbc-azure 1.8.3.0的虚拟环境 . 我的settings.py文件如下 .

DATABASES = {
   'default': {
        'ENGINE': 'sql_server.pyodbc',
        'NAME': 'db_name',
        'USER': 'u_name',
        'PASSWORD': 'p_word',
        'HOST': 'host.database.windows.net',
        'PORT': '',
    }
}

我已经将webapp的传出IP地址添加到服务器,希望这是问题,但事实并非如此 . 检查诊断日志后,我找到了比500错误更详细的解释,但我不确定我理解它 .

ModuleName FastCgiModule

 Data1 FASTCGI_RESPONSE_ERROR

Data2读取WSGI处理程序时发生错误:Traceback(最近一次调用最后一次):导入时文件“D:\ home \ site \ wwwroot \ env \ lib \ site-packages \ sql_server \ pyodbc \ base.py”,第14行pyodbc as Database ImportError:DLL加载失败:%1不是有效的Win32应用程序 . 在处理上述异常期间,发生了另一个异常:Traceback(最近一次调用last):文件“D:\ Python34 \ Scripts \ wfastcgi.py”,第711行,在主env中,handler = read_wsgi_handler(response.physical_path)文件“ D:\ Python34 \ Scripts \ wfastcgi.py“,第568行,在read_wsgi_handler中返回env,get_wsgi_handler(handler_name)文件”D:\ Python34 \ Scripts \ wfastcgi.py“,第541行,在get_wsgi_handler处理程序中= handler()文件” . \ ptvs_virtualenv_proxy.py“,第120行,在get_venv_handler处理程序= get_wsgi_handler(os.getenv('WSGI_ALT_VIRTUALENV_HANDLER'))文件” . \ ptvs_virtualenv_proxy.py“,第78行,在get_wsgi_handler处理程序= handler()文件”D:\ home \ site \ wwwroot \ env \ lib \ site-packages \ django \ core \ wsgi.py“,第14行,在get_wsgi_application中django.setup()文件”D:\ home \ site \ wwwroot \ env \ lib \ site-packages \ django__init __ . py“,第18行,在安装程序apps.populate(settings.INSTALLED_APPS)文件”D:\ home \ site \ wwwroot \ env \ lib \ site-packages \ django \ apps \ registry.py“,第108行,在填充app_config.import_ models(all_models)文件“D:\ home \ site \ wwwroot \ env \ lib \ site-packages \ django \ apps \ config.py”,第198行,在import_models中self.models_module = import_module(models_module_name)文件“D:\ Python34 \ lib \ importlib__init __ . py“,第109行,在import_module中返回_bootstrap.gcd_import(name [level:],package,level)文件”“,第2254行,在_gcd_import文件”“,第2237行,在_find_and_load文件中”“ ,第2226行,在_find_and_load_unlocked文件“”,第1200行,在_load_unlocked文件“”,第1129行,在_exec文件“”,第1471行,在exec_module文件“”,第321行,在_call_with_frames_removed文件“D:\ home \ site \ wwwroot \ env \ lib \ site-packages \ django \ contrib \ auth \ models.py“,第41行,在类Permission(models.Model)中:文件”D:\ home \ site \ wwwroot \ env \ lib \ site -packages \ django \ db \ models \ base.py“,第139行,在new new_class.add_to_class(' meta',Options(meta,** kwargs))文件”D:\ home \ site \ wwwroot \ env \ lib \ site-packages \ django \ db \ models \ base.py“,第324行,在add_to_class中value.contribute_to_class(cls,name)文件”D:\ h ome \ site \ wwwroot \ env \ lib \ site-packages \ django \ db \ models \ options.py“,第250行,在contrib_to_class self.db_table = truncate_name(self.db_table,connection.ops.max_name_length())File” D:\ home \ site \ wwwroot \ env \ lib \ site-packages \ django \ db__init __ . py“,第36行,在getattr中返回getattr(connections [DEFAULT_DB_ALIAS],item)文件”D:\ home \ site \ wwwroot \ env \ lib \ site-packages \ django \ db \ utils.py“,第240行,在getitem后端= load_backend(db ['ENGINE'])文件”D:\ home \ site \ wwwroot \ env \ lib \ site- packages \ django \ db \ utils.py“,第111行,在load_backend中返回import_module('%s.base'%backend_name)文件”D:\ Python34 \ lib \ importlib__init __ . py“,第109行,在import_module中返回_bootstrap . _gcd_import(name [level:],package,level)文件“”,第2254行,在_gcd_import文件“”,第2237行,在_find_and_load文件“”,第2226行,在_find_and_load_unlocked文件“”,第1200行,在_load_unlocked文件中“ “,第1129行,在_exec文件”中,第1471行,在exec_module文件“”中,第321行,在_call_with_frames_removed中le“D:\ home \ site \ wwwroot \ env \ lib \ site-packages \ sql_server \ pyodbc \ base.py”,第16行,in raise ImproperlyConfigured(“加载pyodbc模块时出错:%s”%e)django.core .exceptions.ImproperlyConfigured:加载pyodbc模块时出错:DLL加载失败:%1不是有效的Win32应用程序 . StdOut:StdErr:

3 回答

  • 0

    问题是我的同事正在发布他的环境中使用64位版本的python . 很简单,但我很感激帮助 .

  • 1

    我真的不知道Azure是如何工作的,但是在混合32位和64位驱动程序/ python组合时我遇到了这个错误 . 尝试使用x64位版本的python和驱动程序 .

  • 1

    我无法重现您的问题,但我对您的软件包和版本进行了测试 . 我使用Visual Studio将Django应用程序发布到Azure Web Apps,它运行良好 . 以下是我的参考步骤:1,创建一个空Web应用程序并从本地Git仓库设置部署

    2,创建一个Django在Visual Studio中应用程序,用python 3.4添加虚拟环境,然后安装python包,这里是 requirements.txt 中的内容: Django==1.8.4 pyodbc==3.0.10 django-pyodbc-azure==1.8.3.0

    3,将数据库设置修改为Azure上的MSSQL,按F5进行本地测试

    4,右键单击Django应用程序项目名称,单击 publish 进行部署

    完成部署后,它将自动在默认浏览器中浏览您的应用程序 .

相关问题