我正在尝试将django应用程序发布为与MSSQL服务器兼容。我正在使用带有pyodbc的django-azure-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



  读取WSGI处理程序时发生Data2错误:回溯(大多数
  最近通话结束):文件
  “ D:\ home \ site \ wwwroot \ env \ lib \ site-packages \ sql_server \ pyodbc \ base.py”,
  第14行,在导入pyodbc中作为数据库ImportError:DLL加载
  失败:%1不是有效的Win32应用程序。在处理过程中
  上面的异常,发生了另一个异常:追溯(最新
  最后调用):文件“ D:\ Python34 \ Scripts \ wfastcgi.py”,主行中的第711行
  env,handler = read_wsgi_handler(response.physical_path)文件
  read_wsgi_handler中的“ D:\ Python34 \ Scripts \ wfastcgi.py”行568
  返回env,get_wsgi_handler(handler_name)文件
  get_wsgi_handler中的“ D:\ Python34 \ Scripts \ wfastcgi.py”行541
  handler = handler()文件“。\ ptvs_virtualenv_proxy.py”,第120行,在
  get_venv_handler处理程序=
  get_wsgi_handler(os.getenv('WSGI_ALT_VIRTUALENV_HANDLER'))文件
  get.wsgi_handler处理程序中的“。\ ptvs_virtualenv_proxy.py”,第78行=
  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)文件
  导入模块中的第109行“ D:\ Python34 \ lib \ importlib__init __。py”
  返回_bootstrap._gcd_import(name [level:],包,级别)文件
  _gcd_import文件中的“”行2254
  _find_and_load文件中的“”行2237
  “”,第2226行,在_find_and_load_unlocked中
  _load_unlocked中的文件“”,第1200行
  _exec文件中的文件“”,行1129
  exec_module文件中的“”,第1471行
  “”,第321行,在
  _call_with_frames_removed文件“ D:\ home \ site \ wwwroot \ env \ lib \ site-packages \ django \ contrib \ auth \ models.py”,
  在类Permission(models.Model)中的第41行:File
  “ D:\ home \ site \ wwwroot \ env \ lib \ site-packages \ django \ db \ models \ base.py”,
  第139行,在新的new_class.add_to_class('_ meta',Options(meta,
  ** kwargs))文件“ D:\ home \ site \ wwwroot \ env \ lib \ site-packages \ django \ db \ models \ base.py”,
  add_to_class value.contribute_to_class(cls,name)文件中的第324行
  “ D:\ home \ site \ wwwroot \ env \ lib \ site-packages \ django \ db \ models \ options.py”,
  第250行,在contribute_to_class self.db_table =
  truncate_name(self.db_table,connection.ops.max_name_length())文件
  “ D:\ home \ site \ wwwroot \ env \ lib \ site-packages \ django \ db__init __。py”,
  第36行,在getattr中返回getattr(connections [DEFAULT_DB_ALIAS],
  项目)文件
  “ 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)
  在第109行的文件“ D:\ Python34 \ lib \ importlib__init __。py”
  import_module返回_bootstrap._gcd_import(name [level:],包,
  级别)文件“”,在_gcd_import中,第2254行
  _find_and_load中的文件“”,第2237行
  文件“”,第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 \ sql_server \ pyodbc \ base.py”,
  第16行,在raise ImproperlyConfigured(“加载pyodbc时出错
  模块:%s“%e)django.core.exceptions.ImproperlyConfigured:错误
  加载pyodbc模块:DLL加载失败:%1不是有效的Win32
  应用。 StdOut:StdErr:

最佳答案

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

关于python - 将Django应用程序发布到Azure时出现服务器错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33502166/

10-13 02:53