[имя] спрашивает, что можно сделать, если есть тяжёлая задача в Celery, которая выполняется четыре часа и блокирует выполнение других?

Отделите долгую задачу в собственную очередь и worker-пул, чтобы она не занимала ресурсы коротких заданий. По возможности разбейте четыре часа работы на возобновляемые части.

Короткий ответ

Что ответить на собеседовании

Отделите долгую задачу в собственную очередь и worker-пул, чтобы она не занимала ресурсы коротких заданий. По возможности разбейте четыре часа работы на возобновляемые части.

Подробный разбор

Ответ с пояснениями

Отделите долгую задачу в собственную очередь и worker-пул, чтобы она не занимала ресурсы коротких заданий. По возможности разбейте четыре часа работы на возобновляемые части.

Проверьте, чем задача ограничена — CPU, сетью, БД или ожиданием внешнего сервиса. Настройте concurrency и prefetch под длительность, а timeout и подтверждения — под выбранный broker и модель доставки.

Нужны checkpoint, heartbeat, идемпотентность и восстановление после падения worker. Не увеличивайте число процессов бесконечно, если узкое место — одна БД. Синхронное ожидание дочерних Celery-задач внутри worker также может заблокировать пул. Изоляция очереди помогает управлять ресурсами, но не ускоряет алгоритм автоматически.

Источник: docs.celeryq.dev.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее