Использует ли Celery бэкэнд результата в комбинации цепочки и группы? - PullRequest
0 голосов

В моем проекте python я хочу использовать сельдерей для создания конвейера задач: некоторые задачи будут сгруппированы, и эта группа является частью цепочки. Схема конвейера:

 task_chain = chain(
    group(
        chain(taks1.s(uid=uid, index=i), task2.s(uid=uid, index=i)) for i in
        range(len(collection))
    ),
    task3.s(uid=uid),
    task4.s(uid=uid),
    reduce_job_results_from_pages.s(job_uid=job_uid),
    push_metrics.s(job_uid=job_uid))

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

Спасибо!

1 Ответ

1 голос
/ 26 мая 2020

Ответ частично представлен в разделе Важные примечания на странице Canvas:

Задачи, используемые в аккорде, не должны игнорировать их результаты. На практике это означает, что вы должны включить result_backend, чтобы использовать аккорды. Кроме того, если для параметра task_ignore_result задано значение True в вашей конфигурации, убедитесь, что отдельные задачи, которые будут использоваться в хорде, определены с ignore_result = False. Это применимо как к подклассам Task, так и к декорированным задачам.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...