在Celery中,我想只在所有其他任务完成后才开始执行任务。 我发现了一些像这样的资源:Celery Starting a Task when Other Tasks have Completed和 Running a task after all tasks have been completed 但我对芹菜很新,并不能真正理解上述(或许多其他资源)。
所以我在 tasks.py :
中定义了一个任务@celapp.task()
def sampleFun(arg1, arg2, arg3):
# do something here
我称之为:
for x in xrange(4):
tasks.sampleFun.delay(val1, val2, val3)
我认为会创建4个不同的任务。这实际上发生了,因为我可以在 Celery Flower 的网络界面上看到相同的内容。
现在我想做的是,又添加了另一项任务。说 finalTask 只有在上述所有4个任务完成执行后才能启动。
我还在groups and chords in Celery上阅读了一些文档,但它说如果我想这样做,我需要将我的任务分组在一起,以便它们并行执行。我不想这样做。 (可能是一个好主意,但是现在我的目标是能够理解事物。所以现在我并没有真正专注于表现等)
怎么做? 另一个可能听起来相当愚蠢的基本问题是: 当我们说
tasks.sampleFun.delay
是否会创建异步任务?