Skip to content
13 / 15

Как организовать фоновые задачи и периодический запуск при нескольких инстансах сервиса?

Фоновая задача — это обычное сообщение в очереди: приложение публикует, воркер исполняет. Главные требования — не потерять задачу при падении воркера (подтверждение после выполнения, а не при получении) и не выполнить одну и ту же работу дважды на разных инстансах. Для периодического запуска правило простое: cron внутри каждого пода означает N запусков вместо одного. Лечится либо единственным планировщиком (Celery beat в одном экземпляре, CronJob в кластере), либо распределённой блокировкой — ключом со сроком жизни в Redis или консультативной блокировкой в PostgreSQL, — которую берёт первый успевший. Долгие задачи разбивают на шаги с сохранением прогресса, чтобы выкат не начинал всё заново, а очереди делят по длительности, иначе часовой отчёт заблокирует отправку писем.

Как организовать фоновые задачи и периодический запуск при нескольких инстансах сервиса? | JScriptiser