在收到用户的请求后,我在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
简而言之,共享任务将从位于名为aunit()
的{{1}}目录中的第三个python文件运行函数uploadapp/
。
让我们假设main.py
是一个耗费时间的资源繁重的过程(如文件解析)。当我将它与芹菜融为一体时,它现在完全异步工作,这对我有好处。所以,任务开始 - >芹菜加工 - >它完成然后芹菜设置状态为完成。我可以使用aunit()
查看。
但我想做的是,我想在Celery完成后端处理并将状态设置为SUCCESS时,通过django UI flower
通知正在使用我的应用的用户。 / p>
现在,我知道如果可能:
1。)我经常请求状态并看到它返回SUCCESS。
我如何通过芹菜这样做。如何从Your Task is done processing
查询Celery Task状态并仅使用celery的python模块异步通知用户?
答案 0 :(得分:0)
您需要一个实时机制。我会建议Firebase。在celery任务结束时使用boolean = True更新用户标识的Firebase实时数据库字段。实现一个javascript函数来监听Firebase数据库user_id对象的变化 - >更新UI