AsyncResult / GroupResult中缺少父级和子级

时间:2019-11-09 12:08:45

标签: python celery celery-task

设置: python 3.7.3, 芹菜4.3.0, RabbitMQ 3.7.16, Redis 5.0.4

我正在尝试构建一个显示画布流的应用程序。 我将RabbitMQ用作代理,将Redis用作后端。

请考虑以下画布流程:

cf = add.si(0, 0) | group(add.si(1, 1), add.si(2, 2)) | add.si(3, 3)
res = c1.apply_async()

以调试模式运行并检查res,一切看起来都很好: res是上一个任务AsyncResult的{​​{1}}实例,它没有子级,其父对象是add.si(3, 3)实例。

查看GroupResult子项也很好,我可以看到它有两个子项-GroupResultgroup(add.si(1, 1),其父级是add.si(2, 2)实例{{1} }。

现在,当我尝试通过task_id获取AsyncResult对象时,我期望看到相同的行为:

add.si(0, 0)

现在,我看到AsyncResult为None。 为什么会这样?

再看一遍Flower,我可以看到task_info = AsyncResult(<uuid of task add.si(3, 3)>, app=app) parent_id是task_info.parent uuid-为什么?

我尝试实现事件循环侦听器(类似于Flower),但没有看到task add.si(3, 3)任务。有办法看到吗? 是虫子吗?被设计隐藏了吗?我在Flower的日志中看到有一个add.si(0, 0)任务。有没有办法揭露它?

GroupResult

这是我的代码:

celery.group

我打开了问题here

0 个答案:

没有答案