我有多个工作者,每个人都有自己的队列。它们都在使用apply_async运行任务。
当每个任务可用时,我如何获得它们的结果,它们完成的顺序基本上是随机的。
知道如何在不使用睡眠循环的情况下做到这一点吗?
# task.py
@app.task
def mytask()
n = random.randrange(1,10)
time.sleep(n)
return n
task1 = worker1.mytask.apply_async(queue='queue1')
task2 = worker2.mytask.apply_async(queue='queue2')
task3 = worker3.mytask.apply_async(queue='queue3')
希望应用程序停止,直到其中一个任务完成并返回第一个任务的结果。如果我添加了.join((,我必须在所有3个上使用,并且不知道会首先完成,必须等到所有3个返回结果。
编辑:添加示例代码
谢谢。
您可以使用一些Celery工作流原语对它们进行分组,最明显的是group。