如何在Celery中完成所有其他任务后启动任务

时间:2017-10-27 13:18:33

标签: python celery celery-task

在Celery中,我想只在所有其他任务完成后才开始执行任务。 我发现了一些像这样的资源:Celery Starting a Task when Other Tasks have CompletedRunning 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是否会创建异步任务?

0 个答案:

没有答案