Как следить за фоновыми задачами и worker-процессами (Celery, Sidekiq, RQ)

Практическое руководство по мониторингу очередей задач

Зачем мониторить фоновые задачи?

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

Что будем мониторить?

  • Активность worker-процессов (работают ли они вообще)
  • Длину очереди задач
  • Время выполнения задач
  • Ошибки при выполнении

Celery

1. Проверка активности worker’ов

celery -A your_app status

Можно периодически выполнять эту команду и отправлять результат в ваш мониторинг через webhook или пинг.

2. Мониторинг с помощью flower

Flower — это UI и API для мониторинга Celery. Он предоставляет JSON-данные о worker-процессах, задачах, ошибках и т.д.

celery -A your_app flower --port=5555

Далее можно настроить экспорт метрик или API-запрос к /api/tasks.

Sidekiq

Sidekiq уже включает веб-интерфейс с информацией о очередях, ошибках и выполнении задач.

Для автоматического мониторинга можно настроить:

  • Периодическую проверку состояния очередей
  • Ping в Monitoring SaaS из воркера (например, в начале и конце критичных задач)

RQ (Redis Queue)

RQ также поддерживает веб-интерфейс — rq-dashboard.

pip install rq-dashboard
rq-dashboard

Вы можете опрашивать его API или добавить вызов ping в конце задач для подтверждения выполнения.

Общий подход: "пинг от задач"

Самый надежный способ — встраивать HTTP-запрос (ping) из тела задач или в middleware. Например:

import requests

def task():
    requests.get("https://ev.okchecker.ru/p/<api-key>/backup-db?status=start")
    try:
        # работа задачи
        pass
    finally:
        requests.get("https://ev.okchecker.ru/p/<api-key>/backup-db?status=success")

Алерты и логирование

Добавьте уведомления по email, Slack или Telegram при превышении времени выполнения или ошибках. Также полезно вести лог событий: когда что стартовало, завершилось, упало.

Вывод

Мониторинг очередей задач — это защита от тишины. Чем раньше вы узнаете о сбое воркера — тем меньше потерь. Используйте пинги, API-интерфейсы и алерты, чтобы держать процессы под контролем.

Подключить мониторинг