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

时间:2019-06-27 14:12:22

标签: python celery

我想使用AsyncResult对象重试以前被吊销的任务,但是我收到一条错误消息,说该任务一旦运行就将被丢弃

worker_1 | [2019-06-27 16:04:23,094: INFO/MainProcess] Discarding revoked task: ...

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

还有另一种方法可以取消正在运行的任务而不是将其撤消吗?还是可以以某种方式将其从已撤消任务列表中删除?

1 个答案:

答案 0 :(得分:1)

将已撤销的任务从“死者”中撤回是没有意义的。

我建议您做的是:

  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。