Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当芹菜任务在Django中完成时,更新UI的最佳方式是什么?_Python_Django_Asynchronous_Celery_Django Celery - Fatal编程技术网

Python 当芹菜任务在Django中完成时,更新UI的最佳方式是什么?

Python 当芹菜任务在Django中完成时,更新UI的最佳方式是什么?,python,django,asynchronous,celery,django-celery,Python,Django,Asynchronous,Celery,Django Celery,我希望用户能够单击按钮生成报告,向他显示生成报告动画,然后在报告生成完成后,在页面上显示success这个词 我正在考虑在单击“生成报告”按钮时创建芹菜任务。任务完成后,我更新UI的最佳方式是什么?我是否应该经常通过AJAX调用检查任务是否已完成?Django中是否有更好的方法或第三方通知类应用程序可以帮助完成此过程 谢谢 Edit:我做了更多的研究,唯一能找到的是使用django angular和django websocket redis的三向数据绑定。就这个小功能而言,似乎有点过分了。我想

我希望用户能够单击按钮生成报告,向他显示生成报告动画,然后在报告生成完成后,在页面上显示success这个词

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

谢谢


Edit:我做了更多的研究,唯一能找到的是使用
django angular
django websocket redis
的三向数据绑定。就这个小功能而言,似乎有点过分了。我想如果没有web套接字,唯一可能的方法是每隔x秒不断轮询后端,以检查任务是否已完成。还有什么想法吗?

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

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

if Result.state == u'SUCCESS':
  #Finished
else:
  #something wrong

请注意,轮询意味着您将保持请求和连接处于打开状态。在具有大量点击的web应用程序上,这将浪费大量资源。然而,在较小的网站上,开放连接可能不是什么大不了的事。选择一个现在最容易实施的策略,当您实际遇到性能问题时,它将允许您在以后进行更改