我希望能够在芹菜中链接任务,以便第二个任务仅在第一个任务完成后才能执行。
在下面的示例中,我声明了2个任务。 hello()
和world()
。我希望world()
仅在hello()
完成后执行。
tasks.py
import os
from celery import Celery
from time import sleep
CELERY_BROKER = "pyamqp://guest@localhost//"
app = Celery('tasks', broker=CELERY_BROKER)
@app.task
def hello():
sleep(2) # simulate slow computation
return "Hello"
@app.task
def world():
sleep(2) # simulate slow computation
return "World"
api.py
from celery import chain
res = chain(hello.delay(), world.delay())
print(res)
这将引发以下错误:
TypeError:|:“ AsyncResult”和以下不受支持的操作数类型 “ AsyncResult”
答案 0 :(得分:0)
了解Celery Canvas(工作流)的Chain原语。我建议阅读整个Canvas: Designing Work-flows部分。自然,它讨论了如何构建您所描述的task chains。