Django / Wsgi / Apache抛出脚本错误的过早结束,并且通常的解决方案都不起作用

时间:2012-02-06 10:32:25

标签: django apache nginx mod-wsgi wsgi

经过非常标准和次要的发布后,我们的Apache / Nginx / Django / wsgi设置已停止与可怕的

一起运行

脚本标题的过早结束:django.wsgi

日志中的

消息。没有任何段错误,也没有其他错误消息。

没有外派问题(使用和不包含该模块的示例wsgi app进行检查)。 服务器工作正常。代码库稍有更新,当恐怖开始时apache重新启动。

这是我的wsgi文件:


import sys
import os

sys.path.append('/home/app/')
sys.path.append('/home/app/topmodule/')

os.environ['DJANGO_SETTINGS_MODULE'] = 'app.settings'
os.environ["CELERY_LOADER"] = "django"

import app.settings
import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()

此网站的apache conf是:


WSGIScriptAlias / /home/app/topmodule/django.wsgi
WSGIDaemonProcess app user=app group=app processes=6 threads=1
WSGIProcessGroup app

我也尝试添加:

WSGIApplicationGroup %{GLOBAL}

但没有帮助。 我得到的只是一个apache Server错误页面,错误日志中该死的早期错误。

我确实试图回滚代码库,但这没有任何好处,这导致我怀疑它不是新的代码问题。

修改 我已经将段错误缩小到了Django的wsgi.py中的一行。

跟踪:

http://paste.pocoo.org/show/546803/

一些转储:

http://paste.pocoo.org/show/546846/

请求任何网址时都会发生这种情况。 使用的中间件:


    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.gzip.GZipMiddleware',

2 个答案:

答案 0 :(得分:0)

您可以尝试将django路径显式添加到sys.path吗?

sys.path.append('/usr/local/lib/python2.6/site-packages/django')

(仔细检查它真的在那里:))

答案 1 :(得分:0)

我最终重新安装了apache,mod wsgi和所有相关的软件包。在某些时候出现警告错误,mod_wsgi是针对Python 2.6.6编译的,而运行时是Python 2.6.4。 我将Python从源代码重建为2.6.6并解决了问题。我不确定它是次要版本更新还是修复它的整个重建。我也不确定为什么它一直工作到现在,然后突然停止工作,但至少现在一切都好了。