Моя цель — получить все идентификаторы задач из вызова аккорда django celery, чтобы я мог отозвать задачи позже, если это необходимо. Однако я не могу найти правильный метод для получения идентификаторов задач. Я исполняю аккорд как:
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, но это None.
Я могу вручную создать семантику аккорда, используя группу и другую задачу, как показано ниже, и получить связанные идентификаторы задач, но мне не нравится разбивать вызов. Когда этот код запускается в задаче как подзадачи, это может привести к зависанию основной задачи, когда группа отзывается до начала задачи финализации.
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])
Любые мысли будут оценены!