在收到用户的请求后,我以这种方式在views.py中集成了我的项目与celery
def upload(request):
if "POST" == request.method:
# save the file
task_parse.delay()
# continue在tasks.py中
from __future__ import absolute_import
from celery import shared_task
from uploadapp.main import aunit
@shared_task
def task_parse():
aunit()
return True简而言之,共享任务将从第三个python文件运行函数aunit(),该文件位于uploadapp/目录中,名为main.py。让我们假设aunit()是一个耗费大量资源的过程,需要时间(就像文件解析一样)。当我将它与芹菜集成在一起时,它现在完全异步工作,这对我来说是件好事。因此,任务start -> Celery process -> It Finish然后将celery的状态设置为Finish。我可以使用flower查看它。
但我想要做的是,一旦芹菜在后台完成处理,我想通过django UI通知正在使用我的应用程序的用户Your Task is done processing,并将状态设置为SUCCESS。
现在,我知道这是可能的,如果:
1.)我不断地请求状态,看看它是否返回成功。
我如何通过芹菜做到这一点。如何从views.py查询Celery任务状态,并仅使用celery的python模块异步通知用户?
发布于 2018-06-11 22:57:19
你需要一个实时机制。我建议使用Firebase。使用celery任务末尾的boolean=True更新用户id的Firebase实时DB字段。实现一个javascript函数,监听Firebase数据库user_id对象的变化,->更新UI
https://stackoverflow.com/questions/50751133
复制相似问题