首页 > 解决方案 > 如何知道 Celery 的所有任务都完成了?

问题描述

我在这里遍历所有城市并异步创建芹菜任务(city_explore)。完成所有任务后,我需要在 db 中将状态更新为“Explore Completed”。如果它是正常功能,它可以很容易地完成,但是当任务在 celery 中运行时如何做到这一点?我怎么知道每个城市的所有任务何时完成并更新数据库中的状态?请帮忙。

这是各自的代码

cities = ['a', 'b', 'c']
for city in cities:
    city_explore.delay(name, distance)

@app.task
def city_explore(name, dis):
    explorer(name, dis)

标签: celerycelery-task

解决方案


是的,你可以这样做,但是你必须编写任务状态的轮询代码......更惯用的方法是使用Celery Workflows。一个和弦原语可能对你来说已经足够好了。


推荐阅读