通过任务 ID 在 Celery 中重试任务
我启动了很多任务,但有一些任务(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
希望这些信息对你有帮助。