从Celery中的子任务访问父任务的参数

时间:2013-02-17 16:59:22

标签: python celery

是否可以从子任务Z访问调用父任务A的参数?换句话说,当在链中调用任务Z时,它是否可以以某种方式访问​​在触发任务A时调用的参数 V 但是它没有通过任务A之间的任何中间节点传递和Z ?如果是这样,怎么样?

将Celery 3.0与RabbitMQ一起使用以获得结果后端。

1 个答案:

答案 0 :(得分:1)

我准备用“不”来临时回答我自己的问题 - 希望有更多知识渊博的人会回来找一个解决方案。

在仔细查看Celery文档之后,我认为根本没有办法访问调用父任务的参数。根据{{​​3}}:

  

在其生命周期中,任务将通过几种可能的过渡   状态,每个州可能附加任意元数据。   当任务进入新状态时,忘记了先前的状态   约..

任务可以处于以下状态之一:待处理,已启动,成功,失败,重试和已撤销。对于我的场景,这里的关键似乎是成功状态。我想要做的是,对于给定的成功任务,找到(其中一个)父任务的id,然后查看调用父项的参数。但是,根据文档,SUCCESS状态中的任务将不包含此类数据(因为父项任务本身在生成子任务时已成功):

  

成功任务已成功执行。

     

metadata:result包含任务的返回值。   传播:是的准备好了:是的

换句话说,这似乎有一个硬限制。即使我可以找到我感兴趣的父任务的ID,因为它已成功执行,我将根据定义无法访问调用它的参数,因为它只包含返回值(不再是参数)。