python - Celery 如何处理链内的任务失败?

标签 python django celery django-celery celery-task

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

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

例如:

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

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

有一个涉及该主题的老问题( Retrying celery failed tasks that are part of a chain ),以及 Github issuecommit适用于 Celery 3.0.4 版本,通过使用 Task.retry 转发链链接来解决此问题。但是,我无法找到任何具体文档来解释 Celery 在这种情况下的行为。

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

最佳答案

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

“当您调用重试时,它将使用相同的任务 ID 发送一条新消息,并且它会注意确保该消息被传递到与原始任务相同的队列。

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

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

我也根据第一手经验知道这一点

关于python - Celery 如何处理链内的任务失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28799261/

相关文章:

django - 需要澄清如何使用 Django 1.4 表单向导,特别是预填写和保存

python - 如何配置和运行 celerybeat

python - celery:在所有子任务的所有子任务运行后调用任务

python - 如何使用 Python (pandas) 打开 SQL Server .mdf 文件

python - 如何将传说保留在情节中?

django - 在Django中使用ForeignKey有什么优点?

python - 是否可以将 celery 用于同步任务?

python - 如何更改 python 数据框中的标题行

python - Teradata Python 模块游标结果集在一次迭代后耗尽

django - django 查询中 ImageField 的 Url