调试"脚本头的过早结束" - WSGI/Django

Mar*_*cin 8 django

我最近将一个应用程序部署到共享主机(webfaction),并且由于没有明显的原因,我的网站根本不会加载(直到今天才开始工作).

它是一个django应用程序,但django.log甚至没有创建; 唯一的线索是,在其中一个日志中,我收到错误消息:"脚本标题的过早结束",将我的wsgi文件标识为源.

我已经尝试将日志记录添加到我的wsgi文件中,但是我找不到为它创建的任何日志.有没有推荐的方法来调试此错误?我正在撕裂我的头发.

我的WSGI文件:

import os
import sys

from django.core.handlers.wsgi import WSGIHandler

import logging

logger = logging.getLogger(__name__)


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

virtenv = os.path.expanduser("~/webapps/django/oneclickcosvirt/")
activate_this = virtenv + "bin/activate_this.py"
execfile(activate_this, dict(__file__=activate_this))

# if 'VIRTUAL_ENV' not in os.environ:
#    os.environ['VIRTUAL_ENV'] = virtenv

sys.path.append(os.path.dirname(virtenv+'oneclickcos/'))

logger.debug('About to run WSGIHandler')

try:
        application = WSGIHandler()
except (Exception,), e:
       logger.debug('Exception starting wsgihandler: %s' % e)
       raise e
Run Code Online (Sandbox Code Playgroud)

小智 2

如果没有网络服务器日志,很难定义错误的确切原因:

可能的解决方案: http://code.google.com/p/modwsgi/wiki/InstallationIssues#Multiple_Python_Versions

并且 http://code.google.com/p/modwsgi/wiki/FrequentlyAskedQuestions

问:为什么我在 Apache 错误日志中看到错误消息“脚本标头过早结束”。

答:如果使用守护进程模式,这是 mod_wsgi 守护进程在处理请求时崩溃的症状。您可能还会看到“分段错误”消息。请参阅上面有关“分段错误”问题的答案。

如果您没有正确配置 Apache 并且您的 WSGI 脚本文件作为 CGI 脚本执行,也可能会出现此错误消息。

希望它会有所帮助

  • 我也遇到了由 Python C 扩展引起的同样问题。我将“WSGIApplicationGroup %{GLOBAL}”添加到我的 Apache 配置中,它解决了问题。该指令强制 WSGI 应用程序在第一个 Python 子解释器中运行,这消除了导致 Apache 重新启动进程的死锁。您可以在 [Google Wiki](https://code.google.com/p/modwsgi/wiki/ApplicationIssues#Python_Simplified_GIL_State_API) 上阅读更多相关信息 (3认同)