gpt4 book ai didi

python - Celery - 如何通过任务 id 获取任务名称?

转载 作者:行者123 更新时间:2023-12-03 14:37:35 25 4
gpt4 key购买 nike

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_ids。仅最后一个 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

最佳答案

终于找到了答案。
对于任何想知道的人:
您可以通过启用 result_extended = True 来解决此问题。在你的 celery 配置中。
然后:

result = AsyncResult(task_id, app=celery_app)
result.task_name #tasks.add

关于python - Celery - 如何通过任务 id 获取任务名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63901790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com