首页 文章

在Dreamsenger下运行Django的500个错误

提问于
浏览
2

这是一首旧的悲伤歌曲,带有新信息!

我正在使用Python 2.7.3运行Django 1.8.3作为共享Dreamhost服务器上的Pythonbrew安装;通常情况下,一切正常“python manage.py address.org:8080”,但是当网站直接导航到时没有工作,给出了通用的500内部服务器错误,并且错误日志过早结束了 Headers 消息 .

但是,我将Paste粘贴在那里实际上是从跟踪中踢回错误 .

URL:http://staff.gchrl.org/文件'/home/syslib/staff.gchrl.org/staff_site/paste/exceptions/errormiddleware.py',第142行调用app_iter = self.application(environ,sr_checker )文件'/home/syslib/.pythonbrew/pythons/Python-2.7.3/lib/python2.7/site-packages/django/core/handlers/wsgi.py',呼叫响应中的第189行= self.get_response(请求)文件'/home/syslib/.pythonbrew/pythons/Python-2.7.3/lib/python2.7/site-packages/django/core/handlers/base.py',get_response response 218中的第218行:self.handle_uncaught_exception (request,resolver,sys.exc_info())文件'/home/syslib/.pythonbrew/pythons/Python-2.7.3/lib/python2.7/site-packages/django/core/handlers/base.py', handle_uncaught_exception中的第261行返回debug.technical_500_response(request,* exc_info)文件'/home/syslib/.pythonbrew/pythons/Python-2.7.3/lib/python2.7/site-packages/django/views/debug.py' ,technical_500_response中的第97行html = reporter.get_traceback_html()文件'/home/syslib/.pythonbrew/pythons/Python-2.7.3/lib/pyth on2.7 / site-packages / django / views / debug.py',get_traceback_html中的第384行返回t.render(c)文件'/home/syslib/.pythonbrew/pythons/Python-2.7.3/lib/python2 . 7 / site-packages / django / template / base.py',第209行在渲染中返回self.render(context)文件'/home/syslib/.pythonbrew/pythons/Python-2.7.3/lib/python2.7/ site-packages / django / template / base.py',render中的第201行返回self.nodelist.render(context)文件'/home/syslib/.pythonbrew/pythons/Python-2.7.3/lib/python2.7/ site-packages / django / template / base.py',第903行,渲染位= self.render_node(node,context)文件'/home/syslib/.pythonbrew/pythons/Python-2.7.3/lib/python2.7 /site-packages/django/template/debug.py',render_node中的第79行返回node.render(context)文件'/home/syslib/.pythonbrew/pythons/Python-2.7.3/lib/python2.7/site -packages / django / template / debug.py',第89行在render output = self.filter_expression.resolve(context)文件'/home/syslib/.pythonbrew/pythons/Python-2.7.3/lib/python2.7/站点包/ Django的/ templat e / base.py',第674行解析new_obj = func(obj,* arg_vals)文件'/home/syslib/.pythonbrew/pythons/Python-2.7.3/lib/python2.7/site-packages/django/ template / defaultfilters.py',第779行,日期返回格式(value,arg)文件'/home/syslib/.pythonbrew/pythons/Python-2.7.3/lib/python2.7/site-packages/django/utils/ dateformat.py',第345行,格式为return df.format(format_string)File'/home/syslib/.pythonbrew/pythons/Python-2.7.3/lib/python2.7/site-packages/django/utils/dateformat . py',第37行,格式为pieces.append(force_text(getattr(self,piece)()))文件'/home/syslib/.pythonbrew/pythons/Python-2.7.3/lib/python2.7/site-packages /django/utils/dateformat.py',r中的第270行返回self.format('D,j MYH:i:s O')文件'/home/syslib/.pythonbrew/pythons/Python-2.7.3/lib /python2.7/site-packages/django/utils/dateformat.py',第37行,格式为pieces.append(force_text(getattr(self,piece)()))文件'/home/syslib/.pythonbrew/pythons/ Python的2.7.3 / lib目录/ python2.7 /站点包/ Django的/ utils的/编码 . py',force_text中的第92行s = six.text_type(s)文件'/home/syslib/.pythonbrew/pythons/Python-2.7.3/lib/python2.7/site-packages/django/utils/functional.py ', text_cast中的第141行返回func(* self .__ args,** self .__ kw)文件'/home/syslib/.pythonbrew/pythons/Python-2.7.3/lib/python2.7/site-packages/django/ utils / translation / init.py',ugettext中的第84行返回_trans.ugettext(message)文件'/home/syslib/.pythonbrew/pythons/Python-2.7.3/lib/python2.7/site-packages/django/ utils / translation / trans_real.py',ugettext中的第327行返回do_translate(message,'ugettext')文件'/home/syslib/.pythonbrew/pythons/Python-2.7.3/lib/python2.7/site-packages/ django / utils / translation / trans_real.py',do_translate中的第304行_default = _default或translation(settings.LANGUAGE_CODE)文件'/home/syslib/.pythonbrew/pythons/Python-2.7.3/lib/python2.7/site -packages / django / utils / translation / trans_real.py',第206行翻译_translations [language] =DjangoTranslation(语言)文件'/home/syslib/.pythonbrew/pythons/Python-2.7.3/lib/python2.7/site-packages/django/utils/translation/trans_real.py',init self._add_installed_apps_translations中的第116行()文件'/home/syslib/.pythonbrew/pythons/Python-2.7.3/lib/python2.7/site-packages/django/utils/translation/trans_real.py',_add_installed_apps_translations中的第164行“翻译基础设施不能在“AppRegistryNotReady:在应用程序注册表准备好之前无法初始化翻译基础结构”之前进行初始化 . 检查您是否在导入时不进行非延迟的gettext调用 .

我的passenger_wsgi.py就这样格式化了

import sys, os
INTERP = "/home/syslib/.pythonbrew/pythons/Python-2.7.3/bin/python"
#INTERP is present twice so that the new python interpreter knows the actual executable path
if sys.executable != INTERP: os.execl(INTERP, INTERP, *sys.argv)
sys.path.insert(0, os.getcwd(), "staff_site")
os.environ['DJANGO_SETTINGS_MODULE'] = "staff_site.settings"
from paste.exceptions.errormiddleware import ErrorMiddleware
import django.core.handlers.wsgi
DjangoApp = django.core.handlers.wsgi.WSGIHandler()
application = ErrorMiddleware(DjangoApp, debug=True)

1 回答

  • 0

    编辑:休息下面的原始答案没有完全解决问题 . 不过,它确实是一个临时补丁,并指出了正确的答案 .

    实际的,功能齐全的Django 1.8.3 passenger_wsgi.py应该大致如下,假设使用Python正常的virtualenv安装来冻结资产:

    import sys, os
    
    INTERP = "/home/<username>/<domain>/public/env/bin/python"
    if sys.executable != INTERP: os.execl(INTERP, INTERP, *sys.argv)
    
    sys.path.insert(0, os.getcwd()+"public/<your_app_name>/")
    os.environ['DJANGO_SETTINGS_MODULE'] = "<your_app_name>.settings"
    
    from django.core.wsgi import get_wsgi_application
    
    application = get_wsgi_application()
    

    好的,所以我找到了解决办法 . 根据Joran在评论中的暗示,我查看了settings.py并发现了

    WSGI_APPLICATION = 'staff_site.wsgi.application'
    

    并意识到乘客没有加载它 . 阅读关于Django 1.8.3的文档,我看到它生成了它自己的WSGI兼容的应用程序,并且回溯似乎在实际获得可用的应用程序时失败 . 首先我尝试了

    application = ErrorMiddleware(WSGI_APPLICATION, debug=True)
    

    但是失败了,Passenger给出了一个错误,即没有定义WSGI_APPLICATION . 因此,我尝试了一种不同的方法 . 现在这是我的passenger_wsgi.py文件,但我的信息已被删除 . 我保留了粘贴代码,以绕过Django / Passenger在产生有用错误方面的分歧 . 如果Dreamhost上的任何人遇到Django 1.8.3的500错误问题,这似乎有效:

    import sys, os
    
    INTERP = "/home/path/to/your/install/of/python"
    #INTERP is present twice so that the new python interpreter knows the actual executable path
    if sys.executable != INTERP: os.execl(INTERP, INTERP, *sys.argv)
    
    sys.path.insert(0, os.getcwd()+"<your_app_name>")
    os.environ['DJANGO_SETTINGS_MODULE'] = "<your_app_name>.settings"
    
    from paste.exceptions.errormiddleware import ErrorMiddleware
    import django.core.handlers.wsgi
    
    from <your_app>.wsgi import application as DjangoApp
    
    application = ErrorMiddleware(DjangoApp, debug=True)
    

相关问题