当 Django 中的 celery 任务完成时更新 UI 的最佳方法是什么?

nkn*_*knj 5 python django asynchronous celery django-celery

我希望用户能够单击按钮来生成报告,向他展示生成报告动画,然后在报告生成完成后,在页面上显示“成功”一词。

我正在考虑在单击“生成报告”按钮时创建一个 celery 任务。任务结束后更新 UI 的最佳方式是什么?我是否应该不断通过 AJAX 调用检查任务是否已完成?Django 中是否有更好的方法或第三方通知类型的应用程序可以帮助完成此过程?

谢谢!

编辑:我做了更多研究,我唯一能找到的是与django-angular和的三路数据绑定django-websocket-redis。对于这个小功能来说似乎有点过分了。我想如果没有网络套接字,唯一可能的方法就是每隔 x 秒不断轮询后端以检查任务是否已完成。还有更多想法吗?

roh*_*han 0

轮询是一个很好且简单的解决方案。避免为简单的功能增加不必要的开销。

while Result.state == u'PENDING':
  #do your stuff

if Result.state == u'SUCCESS':
  #Finished
else:
  #something wrong
Run Code Online (Sandbox Code Playgroud)