我如何调试mod_wsgi / django / apache / wget超时

时间:2011-05-01 16:05:11

标签: django apache mod-wsgi wget

我有一个通过django / apache / mod_wsgi运行的web服务,我正在尝试调试 - 运行服务器端需要很长时间,但是使用某些参数它会超时。我尝试在URI上直接wget,并使用urllib2。我从wget收到以下错误:

Read error (Connection timed out) in headers

与此同时,urllib2根本没有返回任何内容 - 它似乎在默默地发生错误。我已经尝试在我的apache配置中增加Timeout指令,但这似乎没有帮助。该服务运行良好,具有不同的参数。我该怎么调试呢?如果不是apache,超时是从哪里来的?

1 个答案:

答案 0 :(得分:0)

问题在于您的服务代码。在尝试调试apache之前,请确保您的服务代码完成执行并返回到apache。

我建议您通过添加输出语句的服务代码进行跟踪。确保在代码返回到mod_wsgi之前添加一个ouput语句(mod_wsgi调用的函数的最后一行。)您可能会看到代码挂在特定位置。这就是代码中该点之前的所有调试语句都会出现,该点之后的所有输出语句都不会出现。

如果您不想添加调试语句,请尝试使用调试器来逐步执行代码。

另一个选择是使用django开发服务器,看看在没有apache运行时是否发生超时。但是,由于开发服务器是单线程的,如果您处理的问题是与并发相关的错误,您的代码将不会挂起。