Celery/Redis — стабильные очереди и расписание (worker/beat)
Задача
Убрать зависания фоновых задач, снизить дубли, сделать выполнение предсказуемым по времени (очередь задач и расписание worker/beat).
Что сделано
• Диагностика очередей, ретраев и расписания beat, анализ поведения worker.
• Настройка таймаутов и стратегии повторов, контроль дублей.
• Healthchecks и базовая наблюдаемость (сигналы, метрики, алерты).
• Воспроизводимый сценарий запуска и проверок (команды и порядок действий).
Результат / Артефакты
• Evidence-lite: чек-лист проверок + итог PASS/FAIL по ключевым пунктам (обезличено).
• Команды проверок, чтобы заказчик мог повторить в своём окружении.
• Стабильный запуск worker/beat без «тихих» сбоев и подвисаний.
Evidence-lite: Checks → Evidence → PASS/FAIL (обезличено)
Проверка: дрейф расписания beat в пределах допуска
Evidence: снимок расписания + контроль временного дрейфа (обезличено)
Статус: ✅ PASS
Примечание: дрейф не превышает порогПроверка: живость worker и корректное завершение
Evidence: liveness-probe + тест graceful shutdown (обезличено)
Статус: ✅ PASS
Примечание: зависших задач нетПроверка: защита от дублей при ретраях
Evidence: чек-лист симуляции повторов (обезличено)
Статус: ✅ PASS
Примечание: дубли не выявленыПроверка: очередь не накапливается бесконтрольно
Evidence: снимок глубины очереди (обезличено)
Статус: ✅ PASS
Примечание: рост backlog не наблюдаетсяПроверка: политика таймаутов и повторов согласована
Evidence: чек-лист параметров таймаутов/повторов (обезличено)
Статус: ✅ PASS
Примечание: значения консистентныПроверка: health-проверки отвечают стабильно
Evidence: вывод /health (обезличено)
Статус: ✅ PASS
Примечание: без деградацийПроверка: базовые сигналы наблюдаемости присутствуют
Evidence: чек-лист метрик/сигналов/алертов (обезличено)
Статус: ✅ PASS
Примечание: минимальный набор естьПроверка: повторяемость проверок обеспечена
Evidence: список команд для повторного прогона + порядок действий
Статус: ✅ PASS
Примечание: шаги воспроизведения описаны
Команды (шаблоны)
(шаблоны, параметры подставляются под конкретный проект)
curl -4 http://127.0.0.1:8080/healthdocker compose psdocker compose logs --tail=200 workerdocker compose logs --tail=200 beatdocker compose exec redis redis-cli LLEN <queue_name>docker compose stop workerdocker compose up -d worker
Типовые причины нестабильности (что обычно чинится)
• Конфликт расписания beat (часовой пояс, дрейф, несколько источников расписания).
• Агрессивные ретраи/отсутствие таймаутов → “лавина” повторов и дубли.
• Зависимости недоступны (Redis/БД), задачи копятся и “залипают”.
• Нет сигналов наблюдаемости, проблема видна слишком поздно.
• Некорректное завершение worker → “stuck tasks” и подвисания.
Безопасность
Описание и доказательства обезличены. Документ/описание не содержит токенов, паролей, IP, доменов и идентификаторов клиента. Перед передачей логов/конфигов необходимо удалять токены, пароли и чувствительные эндпоинты.
