在高级工作流程中获取celery任务ID

炸弹

我需要实现以下情况:

  • 执行任务A
    • 与不同的参数并行执行多个任务B
    • 等待所有任务完成
    • 与不同的参数并行执行多个任务B
    • 等待所有任务完成
    • 执行任务C

我是通过实现和弦链来实现的,这是简化的代码:

#内部的run()方法ATask 
chord_chain = []
为taskB_group在taskB.groups.all():
  任务= [。BTask()SI(ID = taskB_model.id),用于在taskB_model taskB_group.children.all()]
  如果len(任务):
    chord_chain.append(chord(任务,_dummy_callback.s()))
chord_chain.append(CTask()。si(execution_id))
chain(chord_chain)()

问题是我需要能够在任何时间点对所有BTask调用revoke(terminate = True)。较低级别的问题是我无法访问BTask的芹菜ID。

  1. 试图通过chain获得BTask ID result = chain(chord_chain)()但是我没有在返回的AsyncResult对象中找到该信息。是否可以从此对象获取链子ID?(result.children为None)
  2. 试图通过ATask AsyncResult获取BTask ID,但似乎children属性仅包含第一个和弦的结果,而不包含其余任务的结果。
>>> r = AsyncResult(#ATask.id#)
>>> r.children 
[<GroupResult:5599ae69-4de0-45c0-afbe-b0e573631abc [#BTask.id#,#BTask.id#]>,
<AsyncResult: #chord_unlock.id#>]
炸弹

通过用中止的状态标志标记ATask相关模型并在BTask开始时添加检查来解决。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

来自高级工作流程的 API 调用

来自分类Dev

Alfresco-批准工作流程中的任务

来自分类Dev

如何防止在Youtrack工作流程中关闭打开的任务?

来自分类Dev

如何在工作流程中获取KNIME工作流程名称

来自分类Dev

在Automator工作流程中获取Web文章的标题

来自分类Dev

在工作流程中调用工作流程

来自分类Dev

在Celery任务中获取task_id

来自分类Dev

获取 celery 任务 ID

来自分类Dev

设置工作流程模型ID(路径)

来自分类Dev

WebStorm中的ReactJS工作流程

来自分类Dev

在TargetProcess中实施关系工作流程

来自分类Dev

AppleScript在Automator中循环工作流程

来自分类Dev

在JavaFX中构建某种工作流程

来自分类Dev

.netcore中的用户秘密工作流程?

来自分类Dev

SE在Emacs中的OAuth工作流程

来自分类Dev

Camel vs BPM中的工作流程

来自分类Dev

使用“轨道中的工作流程宝石”

来自分类Dev

在工作流程中托管StateMachine元素

来自分类Dev

在Powershell工作流程中解析XML

来自分类Dev

在Powershell工作流程中声明数组

来自分类Dev

11.04中的GPG工作流程

来自分类Dev

在Excel中设置更好的工作流程

来自分类Dev

Powershell工作流程中的动态路径

来自分类Dev

黄瓜中的多步骤工作流程

来自分类Dev

并行任务失败时如何继续工作流程

来自分类Dev

是什么导致Jenkins工作流程未知的步骤/任务

来自分类Dev

获取工作流任务Alfresco的NodeRef

来自分类Dev

启动新的工作流程实例时,如何获取我的工作流程RunID?

来自分类Dev

如何在工作流表单中获取工作流实例的 id?