Получение task_ids для всех задач, созданных с аккордом сельдерея

Моя цель - извлечь все task_ids из вызова аккорда сельдерея django, чтобы я мог отозвать задачи позже, если это необходимо. Однако я не могу найти правильный метод для получения идентификаторов задач. Я исполняю аккорд как:

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.

Я могу вручную создать семантику аккордов с помощью группы и другой задачи, как указано ниже, и получить связанные значения 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 ответ

Я пытаюсь сделать нечто подобное, я надеялся, что смогу просто отозвать аккорд одним звонком, и все в нем будет рекурсивно аннулировано для меня.

Вы можете сделать аккорд из группы и вашего finalizeTask чтобы не прерывать звонки.

Я понимаю, что это произойдет через два месяца после того, как вы спросили, но, может быть, это кому-нибудь поможет, а может, мне просто нужно получить идентификаторы заданий всего в моей группе.

Другие вопросы по тегам