2012-06-27 53 views
1

我有一个Django网站正在产生一个CSV下载。 csv的内容由用户定义的参数决定。用户可能会在服务器上设置需要大量思考时间的参数。我需要一种维持http连接的方式,以便浏览器不会引发错误消息。我听说可以发送间歇性的http头来做到这一点。任何人都可以在正确的方向指向我在django网站上设置它吗?支持http连接,而Django处理一个大的请求(20mins +)

(不幸的是我坚持与慢报告的可能性 - 改善我的SQL不会减轻此)

回答

5

不要在网上做。触发离线任务,使用一点Javascript重复调用一个检查任务是否完成的视图,并在准备好后重定向到完成的文件。

+2

+1除此之外--OP可能会考虑发送电子邮件给用户(附加内容)或另外(作为通知)。 – Marcin

3

而不是阻止用户和它的浏览器20分钟(这不是一个好主意)在后台执行耗时的任务。当任务完成并生成结果时,只需通知用户,以便他/她只需要下载就绪结果即可。

+1

您可能想要使用队列处理系统来执行此操作 - django-celery可能会对您有所帮助。一旦十个用户提交20分钟的任务,每个人都有200分钟的任务......电子邮件通知是这类任务的常见模式。 – Spacedman