问题描述
我提交了 3 个链接在一起的任务。然后我返回链的 id,稍后我试图访问结果
from celery.result import AsyncResult
from my_celery impor app
def get_results(task_id):
result = AsyncResult(task_id,app=app)
if result.ready():
return result.get()
return result.state
这个 AsyncResult 是链中最后一个任务的结果。它也没有其父链。
解决方法
根据此处的答案(这可能是一种过时的方法)-Get progress from async python celery chain by chain id,它提到了以下内容:
您不能仅从任务 ID 中恢复父链,您必须遍历您的队列,这取决于您用作代理的内容。
在这种情况下,您必须按照该答案中建议的方法进行操作。但从我在 AsyncResult()
的 docs 中所看到的,您应该能够将父参数作为参数传递,并且它应该保存子代的父值。从方法签名中可以看出,它默认作为 None
传递。
class celery.result.AsyncResult(id,backend=None,task_name=None,app=None,parent=None)