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