在芹菜中提交链条时,从异步中获取task_name



我应该如何检索任务的名称当我有AsyncResult对象并因此是id

例如,如果我在链条中启动两个任务:

>>> task_chain = (task_A.s() | task_B.s())
>>> async_result = task_chain.apply_async()

我可以使用类似的内部_parents()方法来检索 task_b id,并因此可以检索 task_a

>>> async_result.id
>>> 2ed28e84-0673-4491-a56f-c5ab8dfb5725
>>> async_result._parents()[0].id
>>> e793f4dc-5110-4f57-8f98-8caa48c40528

但是,当我尝试检索task_name时,我什么也没回来:

>>> async_result.task_name
>>> async_result._parents()[0].task_name

为什么会发生这种情况?这可能是一个错误吗?我注意到,通过提交一个任务,task_name的CC_5属性效果很好,并返回了正确的任务名称。

是否有其他方法可以从异步对象检索任务名称?

提前谢谢大家。

P.S。我已经在这里找到了一个类似的问题,但是似乎没有人提出一个实践和有效的解决方案。

芹菜用户

update

显然,似乎我已经用一堵墙撞了一堵墙。Github上有一个关于完全相同的问题的公开票,其涉及组而不是链条的差异。

https://github.com/celery/celery/issues/2504

这样做的一种方法,将其保存到高速缓存中:

cache.set(hash_key, result, 30)  # save result to cache for 30 seconds

您可以通过其钥匙检索:

result = cache.get(hash_key) 

假设其不是含量缓存

update

对不起,我误解了这个问题。

我认为发生的事情是,任务chain Asyncresult的结果仅以任务ID作为其唯一要求。也许如果您尝试过:

async_result = task_chain.apply_async(name="mytasks")

,但我不会指望它

相关内容

  • 没有找到相关文章

最新更新