django - 带有客户端更新的异步 View ,用于长时间运行的进程/ View

标签 django asynchronous progress-bar

我的应用程序中有一个 View ,在请求时可能需要很长时间才能提供给客户。为了通知用户服务器正在工作,我想向用户呈现某种进度条,但它并不是真正的进度条,它更像是这样:

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

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

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

d) 在客户端呈现响应

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

最佳答案

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

资源:

  • Django-SocketIO https://github.com/stephenmcd/django-socketio
  • SocketIO http://socket.io/
  • celery http://celeryproject.org/
  • Django- celery http://docs.celeryproject.org/en/latest/django/index.html
  • 关于django - 带有客户端更新的异步 View ,用于长时间运行的进程/ View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12597152/

    相关文章:

    python - 检查列表中的每个值是否存在于单个查询中给定的 Django 模型表中

    python - Django 验证错误 : ["“(' 1',)” value must be either True, 错误,或无。”]

    javascript - 如何将 django 和 angularJS 运行到单个开发服务器中?

    javascript - 将 WebSQL 与 async.js 一起使用,导致 InvalidStateError

    javascript - 如何使用 javascript 发送多个文件而不是 jQuery 我想要每个文件一个进度条?

    django - 如何访问 DRF 序列化程序中的路径 url 参数?

    asynchronous - 如何确保 Async.StartChild 在继续之前已启动?

    javascript - Async.map - 让它忽略错误,并处理整个列表

    javascript - AngularJs 更新 Bootstrap 进度条

    Python - 每次更新都会打印新的进度条