gunicorn не умеет в chain-reload, пусть и грейсфульно но грохает всех воркеров одновременно. а воркеры по пол секунды вармятся. Кто-нибуть подскажет, какую магию накастовать что бы код по воркерам поочереди расползался в конце ci/cd?
Мы сразу выкинули gunicorn, делали воркеры под supervisord, а сейчас и его выкинули в пользу системных сервисов (у нас фря и rc, но модный systemd тоже годится). Перед всем этим стоит nginx, который балансит апстримы. Грейсфул происходит так: выставляется в health check ендпонит, который обслуживается исключительно nginx-ом, флаг да/нет. Если нет, то отдается 503 ответ вместо 200, что выбрасывает тачку из пула внешнего балансера. Дальше можно идти и спокойно всех ребутать в любом порядке. По окончанию флип флага обратно, чтобы балансер вернул тачку в апстрим. И процесс тот же CI/CD - такие действия происходят сначала с канарейкой, а потом с каждой парой тачек (специфика).