如何使用 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" 带回已撤销的任务没有意义。
我建议你做的是:
使用与已撤销任务相同的参数创建一个新任务。
在任务上使用 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。
我想使用 AsyncResult 对象重试先前已撤销的任务,但我收到一条错误消息,提示一旦我 运行 任务
就会丢弃该任务worker_1 | [2019-06-27 16:04:23,094: INFO/MainProcess] Discarding revoked task: ...
根据 docs 工作人员将已撤销任务列表存储在内存中,直到工作人员重新启动后才会清除。
有没有其他方法可以取消 运行ning 任务而不是撤销它,或者我可以以某种方式从已撤销任务列表中删除任务?
从 "the dead" 带回已撤销的任务没有意义。
我建议你做的是:
使用与已撤销任务相同的参数创建一个新任务。
在任务上使用
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。