我的目的是按顺序调用两个任务
任务1 完成后,调用任务 2。我做到了直到现在
为了以顺序方式执行我的任务,我使用我在文档中找到的链方法。但是我的任务不需要像文档所说的那样工作最后一个任务的结果。因此,我定义了链方法的CELERY_IGNORE_RESULT = True
,而不是在执行时从上一个任务中获取结果。
这是我如何做我的代码
task.py
@app.task
def task1(param):
...
@app.task
def task2(param):
....
views.py
from .task import task1, task2
from celery import chain
chain(task1.delay(identifier), task2.delay(identifier))().get()
我所做的每次尝试都得到这个错误:
|不支持的操作数类型:"AsyncResult"和"AsyncResult">
有谁知道我该如何解决这个问题?
问题是...您应该改为链接签名:
chain(task1.s(identifier), task2.s(identifier))().get()
从文档中:
链基元允许我们将签名链接在一起,以便一个接一个地调用,本质上形成一个回调链。
有关更多详细信息,请参阅 http://docs.celeryproject.org/en/latest/userguide/canvas.html#canvas-designing-work-flows