芹菜链在 django 上不起作用



我的目的是按顺序调用两个任务

任务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

相关内容

  • 没有找到相关文章

最新更新