奇怪的问题。我有一个以两种方式运行的Django网站:
通常通过apache / wsgi:80
在测试时在:8000上使用python manage.py runserver
通过wsgi,一切正常,但是使用runserver
时,当我进入任何错误页面(debug = True
)时,页面会中途加载,然后永远永久加载,而不会显示回溯。
有关加载“中途航线”的一些注意事项:
对于相同的错误似乎加载到完全相同的点
对于不同的错误,它将是不同的点(根据Firebug,回溯的不同部分和文件大小都不同)
对于不同的浏览器,它将加载到不同的位置(如果重新加载页面,则加载到相同的位置)。
一个例子:我现在有一个ValueError,它加载到回溯的第一步,在'local vars',其中加载了request
。在Firefox中,它始终加载最多SSH_CONNECTION
,而在Chrome中,它最多加载SHELL
(在Firefox中可以很好地加载)。
服务器重新启动无效。
正常(非错误)页面加载正常。控制台不显示任何特殊内容,仅显示代码为500的请求。
最佳答案
听起来您的代码中某处有一个pdb.set_trace()
。我猜想是在__unicode__
方法中还是在呈现错误页面期间调用了某种方法。这基于开发服务器的输出被缓冲的概念。
另一个(很有可能)的可能性是,您在某个地方进行了无休止的递归调用(可能与上述set_trace
情况在相似的地方),但是递归功能花费的时间太长,以至于您根本看不到RuntimeError: maximum recursion depth exceeded
错误。
例如:
import time
def foo():
time.sleep(.2)
bar()
def bar():
foo()
bar()
否则,要使Python程序挂起是非常困难的,除非您故意这样做。