奇怪的问题。我有一个以两种方式运行的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程序挂起是非常困难的,除非您故意这样做。

08-27 08:21