长时间运行Django任务后执行javascript

时间:2014-09-07 17:25:22

标签: javascript python django

假设我有一个Django网站。在一个页面上,我在views.py中的函数必须执行一个可能需要5-15秒才能执行的进程。显然,我不想在呈现页面之前等待此过程完成。问题是页面上的一些Javascript需要使用长时间运行过程的结果。那么如何执行这个长时间运行的进程(比如在python线程或Deferred中)并在页面加载后以某种方式将结果发送到Javascript?

1 个答案:

答案 0 :(得分:0)

您可以使用两种不同的方法,具体取决于您需要支持的浏览器。

如果您需要支持IE,则需要使用方法调用&#34; Long-Polling&#34;。长轮询基本上是一个延迟的ajax请求,这意味着一旦服务器获得该请求,它就会保持挂起,直到他能够给它操作的结果(或者在超时时终止它,然后客户端需要发送另一个长的 - 民意调查请求)。 我个人认为这是对传统XHR的攻击。<​​/ p>

首选但不太受支持的方法是Server Sent Events 服务器发送事件是服务器在任何时候通知客户端事件的方式,而客户端无需先发送请求。

有关详细信息,请参阅此extensive answer