Celery如何处理链中的任务失败



当链中的Celery任务失败时会发生什么?

当失败的任务重试成功时,它是否只是从链中的位置恢复?

例如:

my_chain = (task1.s() | task2.s() | task3.s())
my_chain.apply_async((**params))

如果task2失败并且重试成功,那么会执行task3吗?

有一个老问题涉及这个主题(重试作为链一部分的芹菜失败任务),还有一个应用于celery 3.0.4版本的Github问题和提交,它使Task.retry转发链链接来解决这个问题。然而,我找不到任何具体的文件来解释Celery在这种情况下的行为。

当然,在Celery文档重试部分中没有提及(http://celery.readthedocs.org/en/latest/userguide/tasks.html#retrying,http://celery.readthedocs.org/en/latest/reference/celery.app.task.html#celery.app.task.Task.retry)

我相信下面的片段最接近于描述这一点。

"当您调用重试时,它将使用相同的任务id发送一条新消息,并会注意确保消息与始发任务发送到相同的队列。

重试任务时,这也会记录为任务状态,以便您可以使用结果实例跟踪任务的进度(请参阅状态)。"

我相信,跟踪任务状态的状态最能描述您正在寻找的内容。

我也知道这是基于第一手经验

相关内容

  • 没有找到相关文章

最新更新