2

我需要向用户显示一些分析;但是,有时这些分析可能需要一段时间才能完成(有时需要 2-5 秒)。而不是等待这些结果,我想我想在网页上以动态的方式更新它们。

我已经以有限的方式实现了 celery,但我想做的是向 celery 发送一些任务,让屏幕渲染,一旦功能完成,将返回值发送到网页到 udpated。

创建任务后,我应该监控它的状态,还是完成后我可以直接将 json 发送到网页?一些代码示例会有所帮助。

谢谢你。

4

1 回答 1

2

django 很难“推送”数据。它本身不受支持,并且解决方案充其量只是hacky。

有更简单的选项,最流行的是 ajax 轮询。

  1. 用户可以发起进行分析的请求。

  2. django 将进程排队并将其标记为存储中的处理

  3. 用户每隔 x 秒进行一次 ajax 调用,请求请求的状态。

  4. 当请求完成时,存储被更新以反映这一点,下一个轮询请求可以检索适当的数据。

HTML5 原生支持基于套接字的通信。但 django 不支持它。

Django 向用户推送 HTTP 响应

于 2012-06-26T00:13:56.710 回答