具有客户端更新的异步视图,用于长时间运行的进程/视图

时间:2012-09-26 08:01:01

标签: django asynchronous progress-bar

我的应用中有一个视图,可能需要很长时间才能在请求时提供给客户端。为了告知用户服务器正在工作,我想向用户呈现类似进度条的那种,但它实际上不是进度条,它更像是:

a)客户正在请求/ myapp / longrunningview /

b)服务器返回部分html端,包括看起来像服务器工作的动画。同时服务器正在计算响应的其余部分,这个过程需要很长时间

c)服务器完成并将响应返回给客户端

d)在客户端提交回复

这不是真正的进度条,因为用户可以从我的应用程序外的页面请求此页面,我想立即向用户返回一些内容,而无需等待整个过程完成。我找到的进度条实现都是基于发送到服务器的某种形式,而客户端在等待响应的同时显示进度条。

1 个答案:

答案 0 :(得分:3)

我会使用芹菜任务来做这类事情。当用户发出请求时,启动任务,然后发回一个带有进度微调器或其他任何内容的页面,然后每隔几秒就有一段AJAX命中服务器询问它是否完成,或者使用socketio和django -socketio或类似的包推送"完成"通知客户,然后可以将您重定向到您需要去的任何地方。

资源: