如何使芹菜任务仅在上一个任务成功后运行



我有两个芹菜任务,我希望第二个任务只有在第一个任务成功时才运行,像这样

@celery.task()
def add_together(a, b):
return a + b
@celery.task()
def subtract(a, b):
return a - b

第一次调用

add_together.delay(2,2)

第二次调用

subtract.delay(4,2)

我希望第二个仅在第一个成功时才运行

您可以通过链接任务来执行此操作

@celery.task()
def add_together(a, b):
return a + b
@celery.task()
def subtract(a, b):
return a - b
celery_chain = add_together.s(2,2) | subtract.s(2)
celery_chain()

从 add_together 返回的结果将传递给上面示例中的第一个减法参数。因此,为什么我在减法中省略了"4".delay(4,2(

而不是按照@pAulseperformance的建议按链执行任务,因为第二个任务将在第一个任务失败的情况下执行。仅当前一个任务成功时,才能使用回调来执行任务。

add_together.apply_async((2, 2), link=subtract.si(4,2))

有关回调的更多信息,请查看此或此用于任务签名

相关内容

  • 没有找到相关文章

最新更新