Celery AsyncResult 没有父母

问题描述

我提交了 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)