Python 没有对manage.py runserver的回溯
奇怪的问题。我有一个Django网站,我以两种方式运行:Python 没有对manage.py runserver的回溯,python,django,traceback,Python,Django,Traceback,奇怪的问题。我有一个Django网站,我以两种方式运行: 通过apache/wsgi在:80正常 在python manage.py runserver打开的情况下:测试时为8000 通过wsgi,一切正常,但是使用runserver,当我到达任何错误页面(debug=True)时,页面加载到一半,然后一直加载,没有显示回溯 关于“中途”加载的一些注意事项: 对于相同的错误,它似乎加载到完全相同的点 对于不同的错误,它将是不同的点(根据Firebug,追溯的不同部分和不同的文件大小) 对于不同
python manage.py runserver
打开的情况下:测试时为8000runserver
,当我到达任何错误页面(debug=True
)时,页面加载到一半,然后一直加载,没有显示回溯
关于“中途”加载的一些注意事项:
- 对于相同的错误,它似乎加载到完全相同的点
- 对于不同的错误,它将是不同的点(根据Firebug,追溯的不同部分和不同的文件大小)
- 对于不同的浏览器,它将加载到不同的点(如果重新加载页面,则始终加载到相同的点)
- 举个例子:我现在有一个ValueError,它加载到回溯的第一步,在“localvars”加载
。在Firefox中,它始终最多加载request
,而在Chrome中,它最多加载SSH\u连接
(在Firefox中加载良好)SHELL
- 服务器重启无效
正常(非错误)页面加载正常。控制台没有显示任何特殊内容,只显示代码为500的请求。听起来您的代码中有一个
pdb.set_trace()
。我猜是在\uuuuunicode\uuuuu
方法中,还是在呈现错误页面的过程中调用的东西。这是基于dev服务器的输出被缓冲的概念
另一种(很可能)的可能性是,在某个地方(很可能与前面提到的set_trace
情况类似)有一个无休止的递归调用,但是递归功能所用的时间刚好足够长,以至于您永远看不到运行时错误:超过了最大递归深度
例如:
import time
def foo():
time.sleep(.2)
bar()
def bar():
foo()
bar()
否则很难让Python程序挂起,除非您是有意这样做的。请参见
解决方法是安装“django extensions”和werkezeug,并使用manage.py runserver\u plus
启动服务器。此增强的开发服务器在默认情况下会显示回溯和其他细节。控制台上运行runserver
的地方打印了什么?它(通常)会显示代码为500的请求,但没有错误。您是否在本地服务器上尝试了curl
或wget
?它们可能会显示一些信息更丰富的错误消息。还可以尝试Chrome的“Inspect element”选项查看网络流量。谢谢您的回答。这是有道理的,但恐怕我没有在任何地方使用过set\u trace
(直到现在我才真正意识到它的存在)。@Mark-没问题。我只是在答案上添加了另一种可能性。