通过任务 ID 在 Celery 中重试任务

6 投票
2 回答
6965 浏览
提问于 2025-04-16 12:39

我启动了很多任务,但有一些任务(763个)还没有完成,处于等待状态,但系统没有在处理任何事情……我可以通过给celery任务的ID来重试这些任务吗?

2 个回答

1

现在这个问题解决了,原因是我设置了 celery.conf.update(result_extended=True),这个设置可以让任务传入的参数得以保存:

def retry_task(task_id):    
    meta=celery.backend.get_task_meta(task_id)
    task = celery.tasks[meta['name']]
    task.apply_async(args=meta['args'], kwargs=meta['kwargs']) #specify any other parameters you might be passing
12

你不能这样做。

你只能在任务内部重新尝试这个任务,不能在外部进行。

在这种情况下,最好的办法是用相同的参数重新运行这个任务类型,这样你就能完成相同的工作,但会生成一个新的进程ID(PID),用来标识你的这个过程或任务。

另外要记住,celery的PENDING状态不仅仅意味着任务在等待执行,也可能表示这个任务的状态是未知的。

http://celeryq.org/docs/userguide/tasks.html#pending

希望这些信息对你有帮助。

撰写回答