Django停止打印到stdout

时间:2009-06-18 14:47:57

标签: django

首先,我正在使用Windows,只是为了清楚。我正在使用cmd.exemanage runserver,服务器运行得很好。然而,有时,在看似随机的基础上,Django只是停止写入stdout!服务器响应我的请求和所有内容,但没有任何内容被打印出来。

为了使它更清晰,我甚至没有在我的Django代码中谈论print,所以这不是问题所在。我正在谈论什么时候打印,例如GET /someurl HTTP/1.1,yada-yada ...按Ctrl + Break并重新启动服务器无济于事。但是,如果我退出命令提示符并启动一个新命令并运行该服务器,它将再次开始工作。

有关正在发生的事情的任何想法?这是Django 1.0.2 final和Python 2.6.2。

4 个答案:

答案 0 :(得分:0)

您是否在代码中的某个位置为sys.stdoutsys.stderr分配了一些内容?

答案 1 :(得分:0)

开发服务器有时会表现得很奇怪,只需用ctrl-break停止它然后重新启动它。

你可以尝试一件事,只是为了确保服务器本身没有停止,是做硬刷新(ctrl-F5),如果它没有响应,那么服务器实际上已经死了,你刚看到页面的缓存版本。

答案 2 :(得分:0)

这可能看起来很愚蠢,但你检查了日志文件吗?此外,您可以从urllib或任何您想要的Web客户端发出大量请求,并尝试重现该请求。也许你会看到一个模式,说明为什么会发生这种情况。

答案 3 :(得分:0)

也许有点拉伸,但在Linux下使用Twisted框架(而不是Django)的Python 2.6,我有这种行为发生在我的应用程序向stdout发送NULL并且stdout被重定向到syslog的任何时候。我原以为这是扭曲框架的syslog实现中的一个错误,但也许更多。你可以从日志记录或客户端活动中告诉你在丢失标准输出之前最后做了什么,看看它是否a)总是在少数几个地方之一和2)如果你当时发送任何有趣的东西?