我有两个芹菜任务,我希望第二个任务只有在第一个任务成功时才运行,像这样
@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))
有关回调的更多信息,请查看此或此用于任务签名