【问题标题】:Getting task_ids for all tasks created with celery chord获取使用 celery chord 创建的所有任务的 task_ids
【发布时间】:2013-09-17 07:27:12
【问题描述】:

我的目标是从 django celery chord 调用中检索所有 task_id,以便稍后我可以在需要时撤销任务。但是,我无法找出检索任务 ID 的正确方法。我执行和弦为:

c = chord((loadTask.s(i) for i in range(0, num_lines, CHUNK_SIZE)), finalizeTask.si())
task_result = c.delay()
# get task_ids

我检查了 task_result 的 children 变量,但它是 None。

我可以通过使用组和另一个任务来手动创建和弦语义,如下所示,并检索关联的 task_ids,但我不喜欢中断呼叫。 当此代码作为子任务在任务中运行时,如果在完成任务开始之前撤销组,则可能导致主任务挂起

g = group((loadTask.s(i) for i in range(0, num_lines, CHUNK_SIZE))) 
task_result = g.delay()
storeTaskIds(task_result.children)
task_result.get()

task_result2 = self.finalizeTask.delay()
storeTaskIds([task_result2.task_id])

任何想法将不胜感激!

【问题讨论】:

    标签: django task celery chord


    【解决方案1】:

    我正在尝试做类似的事情,我希望我可以通过一次调用来撤销和弦,并且其中的所有内容都会被递归地撤销。

    您可以在群组和您的 finalizeTask 之间建立和弦,以免打断电话。

    我意识到这将在您询问两个月后到来,但也许它会对某人有所帮助,也许我应该获取我小组中所有内容的任务 ID。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-02
      • 1970-01-01
      • 1970-01-01
      • 2013-01-07
      • 1970-01-01
      • 2011-03-19
      • 1970-01-01
      相关资源
      最近更新 更多