我正在尝试将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/