如何防止Django中的FCGI请求超时

时间:2012-03-13 08:52:55

标签: python django fastcgi

我有一个webhook需要一点时间才能完成(大约5分钟)。但是,请求在大约30秒后会超时。

我与HostGator共享托管并使用FCGI进行部署。

我认为请求会超时,因为在处理请求之前没有HTTPResponse。如果我可以在处理请求时从视图生成一些HTTPResponse,则脚本可能能够运行更长时间。

[P.S。:之前我尝试使用Google App Engine,使用print 'hi'会在浏览器中打印“hi”而不是记录它。与Django一样可行。这样做可能会在请求完成时发送响应。] (我在Django IRC上被告知,即使我能够打印发送消息作为响应,它只会在返回Httpresponse时抛出。)因此它有人建议使用带有可迭代的Httpresponse。

2 个答案:

答案 0 :(得分:3)

Django IRC的人告诉他们使用带有生成器的HttpResponse来连续发送输出,从而防止脚本空闲超时。

使用Httpresponse和生成器的代码非常出色described herehere

谢谢大家!

答案 1 :(得分:2)

超时是在网络服务器中,而不是在Django中。您向Web服务器发出请求并从中获取响应,因此您无法获得该响应之外的任何内容。在你的情况下,你应该在服务器上创建一个后台任务,通常由cron或芹菜启动(它暗示你不能在hostgator上运行celery,因此使用cron)和任务队列。在cliend方面,您定期使用AJAX向服务器发出请求,这样您就可以检查任务的状态并在完成任务时显示通知。