没有manage.py runserver的回溯

时间:2013-06-08 22:56:02

标签: python django traceback

奇怪的问题。我有一个Django网站,我以两种方式运行:

  1. 通过apache / wsgi:80通常
  2. python manage.py runserver开启时:8000测试时
  3. 通过wsgi一切正常,但使用runserver,当我到达任何错误页面(debug = True)时,页面加载到中途,然后只是永远加载,而不显示回溯。

    关于加载'中途'的一些注意事项:

    • 似乎加载到相同错误的完全相同的点
    • 对于不同的错误,它将是一个不同的点(根据Firebug,回溯的不同部分和不同的文件大小)
    • 对于其他浏览器,它将加载到不同的点(如果重新加载页面,则始终为相同的点)。
    • 一个例子:我现在有一个ValueError,它加载到追踪的第一步,在'local vars',加载request。在Firefox中,它一直最多加载SSH_CONNECTION,而在Chrome中最多加载SHELL(在Firefox中加载得很好)。
    • 服务器重启无效。

    正常(非错误)页面加载得很好。控制台没有显示任何特殊内容,只有代码500的请求。

2 个答案:

答案 0 :(得分:1)

听起来你的代码中某处有pdb.set_trace()。我会猜测在__unicode__方法或在渲染错误页面期间调用的东西。这是基于dev服务器的输出被缓冲的概念。

另一种(非常可能)的可能性是你在某个地方进行了无休止的递归调用(很可能在与上述set_trace情况类似的地方),但是递归功能需要足够长的时间,你永远不会请参阅RuntimeError: maximum recursion depth exceeded错误。

例如:

import time

def foo():
    time.sleep(.2)
    bar()

def bar():
    foo()

bar()

除非你故意这样做,否则很难让Python程序挂起来。

答案 1 :(得分:1)

请参阅https://code.djangoproject.com/ticket/15132

解决方法是安装" django-extensions"和werkezeug,并使用manage.py runserver_plus启动服务器。此增强型开发服务器默认显示其他细节中的回溯。