私の目標は、必要に応じて後でタスクを取り消すことができるように、django celery chord 呼び出しからすべての 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_id を取得できますが、呼び出しを分割するのは好きではありません。このコードがタスク内でサブタスクとして実行されると、ファイナライズ タスクが開始される前にグループが取り消されると、メイン タスクがハングする可能性があります。
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])
どんな考えでも大歓迎です!