Celery AsyncResult 没有 parents
Celery AsyncResult does not have parents
我提交了 3 个链接在一起的任务。然后我 return 稍后我试图访问结果的链的 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 是链中最后一个任务的结果。它也没有链 parents.
这是一个错误还是我做错了什么?
根据此处的答案(这可能是一种过时的方法)- Get progress from async python celery chain by chain id,它提到了以下内容:
you can't recover the parent chain from just the task ID, you'd have to iterate over your queue which may or may not be possible depending on what you use as a broker.
在这种情况下,您必须按照该答案中建议的方法进行操作。但是从我在 docs for AsyncResult()
中看到的情况来看,您应该能够将父参数作为参数传递,并且它应该保存子项的父值。它默认传递为 None
,从方法签名可以看出。
class celery.result.AsyncResult(id, backend=None, task_name=None, app=None, parent=None)
我提交了 3 个链接在一起的任务。然后我 return 稍后我试图访问结果的链的 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 是链中最后一个任务的结果。它也没有链 parents.
这是一个错误还是我做错了什么?
根据此处的答案(这可能是一种过时的方法)- Get progress from async python celery chain by chain id,它提到了以下内容:
you can't recover the parent chain from just the task ID, you'd have to iterate over your queue which may or may not be possible depending on what you use as a broker.
在这种情况下,您必须按照该答案中建议的方法进行操作。但是从我在 docs for AsyncResult()
中看到的情况来看,您应该能够将父参数作为参数传递,并且它应该保存子项的父值。它默认传递为 None
,从方法签名可以看出。
class celery.result.AsyncResult(id, backend=None, task_name=None, app=None, parent=None)