Обработка ошибок при использовании цепочки групп в сельдерее

У меня есть 100 задач. Но я хочу обрабатывать только 4 задачи одновременно. Как только эти 4 задачи будут выполнены, я хочу запустить следующий набор из 4 задач. Это можно сделать, сгруппировав задачи в наборы по 4, а затем объединив их в цепочки. Но между некоторыми задачами может произойти сбой, как я могу обработать эти ошибки и предпринять соответствующие действия, чтобы я повторил попытку только для тех задач, которые не удалось выполнить. Насколько мне известно, в цепочке, если одна задача завершается сбоем, последующие задачи в цепочке не будут выполняться. Поэтому, если я реализую цепочку групп, если какие-либо задачи в группе завершатся сбоем, вся цепочка завершится ошибкой. Предложите мне правильный метод обработки ошибок для этого, также будет оценена любая лучшая идея для реализации этого.

Я отключил бэкэнд результатов.

Небольшая предыстория: у меня есть cron, работающий каждые 30 секунд, реализованный с использованием celery-beat, который одновременно получает 100 новых задач. Таким образом, все эти цепочки и группировки должны выполняться внутри функции cron.

Я использую сельдерей 3.1.25


person DUDE_MXP    schedule 17.11.2018    source источник
comment
Требует ли следующий набор задач выполнения первого набора задач?   -  person schillingt    schedule 17.11.2018
comment
@schillingt нет, это не требуется. Все задачи независимы друг от друга.   -  person DUDE_MXP    schedule 17.11.2018


Ответы (1)


Не связывайте задачи вместе, если они независимы. Настройте параметры рабочего процесса celery для конкретной очереди, чтобы ограничьте количество рабочих до 4, используя --concurrency 4 или -c 4.

person schillingt    schedule 17.11.2018
comment
вы имеете в виду, что я загружаю все 100 задач в очередь, но поскольку ни один из рабочих не равен 4, одновременно будут обрабатываться только 4 задачи - person DUDE_MXP; 17.11.2018
comment
В основном, да. Возможно, вам придется настроить некоторые другие параметры, но я бы выбрал именно этот подход. - person schillingt; 17.11.2018
comment
Прямо сейчас у меня работает только 1 рабочий с параллелизмом 4, я думаю, что одна эта конфигурация может помочь мне в достижении того, чего я хочу. Мне просто нужно прощупать их всех сразу до очереди. - person DUDE_MXP; 17.11.2018