如何使用 AsyncResult 重试已撤销的 Celery 任务

How do I retry a revoked Celery task using AsyncResult

我想使用 AsyncResult 对象重试先前已撤销的任务,但我收到一条错误消息,提示一旦我 运行 任务

就会丢弃该任务
worker_1 | [2019-06-27 16:04:23,094: INFO/MainProcess] Discarding revoked task: ...

根据 docs 工作人员将已撤销任务列表存储在内存中,直到工作人员重新启动后才会清除。

有没有其他方法可以取消 运行ning 任务而不是撤销它,或者我可以以某种方式从已撤销任务列表中删除任务?

从 "the dead" 带回已撤销的任务没有意义。

我建议你做的是:

  1. 使用与已撤销任务相同的参数创建一个新任务。

  2. 在任务上使用 update_state(),并指定可用于关联两个不同任务(已撤销任务和新任务)的元数据。类似于 tsk.update_state(meta={"job-id": "babadeda123", "client-id": "skynet", "previous-task-id": "64fb925e-86cb-4d29-b4e5-33f41f8416cc"}),其中 64fb925e-86cb-4d29-b4e5-33f41f8416cc 是已撤销任务的 ID。