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



我的应用程序中有一个视图,当请求时,它可能需要很长时间才能提供给客户端。为了通知用户服务器正在工作,我想向用户展示一些类似进度条的东西,但它并不是真正的进度条,它更像这样:

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

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

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

d) 在客户端,响应呈现

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

对于这类事情,我会使用芹菜任务。当用户提出请求时,启动任务,然后用进度微调器或其他什么东西发回一个页面,然后每隔几秒钟让一段AJAX访问服务器,询问是否完成,或者使用socketio和django-socketio或类似的包向客户端推送"完成"通知,然后客户端可以将您重定向到需要去的地方。

资源:

Django SocketIOhttps://github.com/stephenmcd/django-socketio
  • SocketIOhttp://socket.io/
  • 芹菜http://celeryproject.org/
  • Django芹菜http://docs.celeryproject.org/en/latest/django/index.html
  • 最新更新