我的目标是从 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的孩子变量,但它是无。
我可以使用组和另一个任务手动创建和弦语义,如下所示,并检索关联的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])
任何想法将不胜感激!
> 我正在尝试做类似的事情,我希望我可以通过一次调用撤销和弦,其中的所有内容都会被递归撤销。
你可以从小组和你的finalizeTask
中发出一个和弦,以防止中断电话。
意识到这是在您询问两个月后到来的,但也许它会帮助某人,也许我应该获取我组中所有内容的任务 ID。