繁体   English   中英

没有对manage.py runserver的追溯

[英]No traceback for manage.py runserver

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

  1. 通过apache / wsgi正常:80
  2. 测试时在8000上使用python manage.py runserver

通过wsgi,一切正常,但是使用runserver ,当我进入任何错误页面( debug = True )时,页面加载一半,然后永远永久加载,而没有显示回溯。

有关加载“ halfway”的一些注意事项:

  • 对于相同的错误似乎加载到完全相同的点
  • 对于不同的错误,它将是不同的点(根据Firebug,回溯的不同部分和文件大小都不同)
  • 对于不同的浏览器,它将加载到不同的位置(如果重新加载页面,则加载到相同的位置)。
  • 一个例子:我现在有一个ValueError,它加载到回溯的第一步,即“本地变量”,其中加载了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程序挂起是非常困难的,除非您故意这样做。

参见https://code.djangoproject.com/ticket/15132

解决方法是安装“ django-extensions”和werkezeug,然后使用manage.py runserver_plus启动服务器。 默认情况下,此增强的开发服务器显示回溯以及其他功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM