当我获得AsyncResult
对象并因此id
时,我应该如何检索任务的名称?
例如,如果我在链中启动了两个任务:
>>> task_chain = (task_A.s() | task_B.s())
>>> async_result = task_chain.apply_async()
我可以使用内部id
方法检索 task_B 的_parents()
,然后 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
的{{1}}属性完全正常,并返回正确的任务名称。
还有其他方法可以从AsyncResult对象中检索任务的名称吗?
提前谢谢大家。
P.S。 我已经在这里找到了类似的问题,但似乎没有人提出一个实用且有效的解决方案。
更新
显然我似乎碰到了这个墙。在github上有一个关于完全相同问题的公开票,区别在于它涉及组而不是链。
答案 0 :(得分:-3)
其中一种方法是将其保存到缓存中:
left join
您可以通过密钥检索它:
cache.set(hash_key, result, 30) # save result to cache for 30 seconds
假设它不是InMemory缓存
<强>更新强>
抱歉,我误解了这个问题。
我认为发生的事情是task_chain AsyncResult的结果初始化时只将任务ID作为唯一要求。也许你试试这个:
result = cache.get(hash_key)
但我不指望它