获取使用芹菜和弦创建的所有任务的task_ids

时间:2013-09-12 18:55:18

标签: django task celery chord

我的目标是从django芹菜和弦调用中检索所有task_ids,以便我可以在以后需要时撤消任务。但是,我无法找出检索任务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])

任何想法都将不胜感激!

1 个答案:

答案 0 :(得分:1)

我正在尝试做类似的事情,我希望我可以通过一个电话撤销和弦,其中的所有内容都将以递归方式撤销。

您可以在群组和finalizeTask之外制作一个和弦,以防止分手。

我意识到这是在你提出问题两个月之后发生的,但也许它会对某人有所帮助,也许我应该得到我小组中所有内容的任务ID。