Celery
Распределённая очередь задач для асинхронной обработки и периодических заданий в Python.
Что это
Celery — фоновые задачи, периодические задания (Celery Beat) и распределённые вычисления для Django и FastAPI. Использует Redis или RabbitMQ как брокер сообщений.
Celery 5 поддерживает Python 3.8+, улучшенный мониторинг через Flower, canvas-примитивы (chain, group, chord) для оркестрации задач. По сравнению с Dramatiq и Huey, Celery предлагает самую зрелую экосистему и нативную интеграцию с Django. По сравнению с asyncio для фоновых задач, Celery обеспечивает persistence (задачи не теряются при перезагрузке), retry-механизмы и горизонтальное масштабирование через добавление воркеров.
Ключевые возможности
Фоновые задачи
Тяжёлые операции выполняются асинхронно — веб-сервер не блокируется. Retry с exponential backoff обеспечивает устойчивость к временным сбоям.
Celery Beat
Периодические задания по расписанию — cron на стероидах. Поддерживает crontab, solar и interval расписания с точностью до секунды.
Масштабирование
Горизонтальное масштабирование — добавьте воркеров при росте нагрузки. Canvas-примитивы (chain, group, chord) позволяют оркестрировать сложные workflow.
Почему мы используем
Celery выносит тяжёлые операции из веб-запроса: отправка email, генерация PDF, обработка изображений, вызовы AI API. Пользователь не ждёт — задача выполняется в фоне.
Мы выбираем Celery с Redis-брокером для большинства проектов. Redis уже есть в стеке для кеширования, добавление Celery не требует дополнительной инфраструктуры. Для AI-задач (вызовы LLM, генерация изображений) фоновая обработка критична — ответ от OpenAI API занимает 5-30 секунд, веб-сервер не должен ждать.
Сильные стороны
Retry, ack/nack, dead letter queue — задачи не теряются.
Нативная поддержка Django и Flask, легко интегрируется с FastAPI.
Наш опыт
Celery используется в наших Django и FastAPI проектах для фоновых задач: отправка уведомлений, генерация отчётов, AI-обработка, периодические ETL-задания через Celery Beat.
В проекте Oil-Game Celery обрабатывает аукционы: каждый раунд запускается по таймеру через Beat, фоновые задачи обрабатывают ставки и обновляют результаты. Distributed locks через Redis предотвращают дублирование при перезапуске.
Для каких задач применяем
- Фоновая обработка (email, PDF, AI)
- Периодические задания (ETL, отчёты)
- Распределённые вычисления
Проекты с использованием Celery
AI-Director
SaaS-платформа для интеллектуального анализа компаний, поиска подрядчиков и генерации досье на персон с использованием нескольких …
CRM для B2B продаж
Кастомная CRM-система для управления сложными B2B-продажами с длинным циклом сделки.
Должная осмотрительность
Сервис автоматической проверки контрагентов: интеграция с ВОК API (СБИС), фоновый мониторинг по данным 1С, парсинг …
Корпоративная CRM
Полнофункциональная CRM-система для управления клиентами, сделками, задачами и аналитикой продаж с гибкой настройкой под бизнес-процессы. …