【发布时间】:2021-01-02 04:58:57
【问题描述】:
Celery - 底线:我想通过任务 id 获取任务名称(我没有任务对象)
假设我有这个代码:
res = chain(add.s(4,5), add.s(10)).delay()
cache.save_task_id(res.task_id)
然后在其他地方:
task_id = cache.get_task_ids()[0]
task_name = get_task_name_by_id(task_id) #how?
print(f'Some information about the task status of: {task_name}')
如果我有一个任务对象,我知道我可以获得任务名称,例如:celery: get function name by task id?。 但是我没有任务对象(也许它可以通过 task_id 或其他方式创建?我在文档中没有看到任何与此相关的内容)。
另外,我不想在缓存中保存任务名称。 (假设我有一个很长的链/其他 celery 原语,我不想保存它们的所有名称/task_id。只需最后一个 task_id 就足以获取有关所有任务的所有信息,使用 .parents 等)
我查看了 AsyncResult 和 AsyncResult.Backend 对象的所有相关方法。唯一似乎相关的是 backend.get_task_meta(task_id),但它不包含任务名称。 提前致谢
PS:AsyncResult.name 总是返回 None:
result = AsyncResult(task_id, app=celery_app)
result.name #Returns None
result.args #Also returns None
【问题讨论】:
标签: python celery celery-task