我的目标是从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])
任何想法都将不胜感激!
答案 0 :(得分:1)
我正在尝试做类似的事情,我希望我可以通过一个电话撤销和弦,其中的所有内容都将以递归方式撤销。
您可以在群组和finalizeTask
之外制作一个和弦,以防止分手。
我意识到这是在你提出问题两个月之后发生的,但也许它会对某人有所帮助,也许我应该得到我小组中所有内容的任务ID。