Бэкенды и брокеры¶
- Релиз:
5.3
- Дата:
авг. 04, 2023
Celery поддерживает несколько альтернатив транспортировки сообщений.
Инструкции брокера¶
Обзор брокера¶
Это сравнительная таблица поддержки различных транспортов, более подробную информацию можно найти в документации по каждому отдельному транспорту (см. Инструкции брокера).
Имя |
Статус |
Мониторинг |
Дистанционное управление |
RabbitMQ |
Стабильный |
Да |
Да |
Redis |
Стабильный |
Да |
Да |
Amazon SQS |
Стабильный |
Нет |
Нет |
Зоопарк |
Экспериментальный |
Нет |
Нет |
Экспериментальные брокеры могут быть функциональными, но у них нет специальных сопровождающих.
Отсутствие поддержки мониторов означает, что транспорт не реализует события, и поэтому Flower, celery events, celerymon и другие инструменты мониторинга на основе событий работать не будут.
Удаленное управление означает возможность проверять и управлять рабочими во время выполнения с помощью команд celery inspect и celery control (и других инструментов, использующих API удаленного управления).
Резюме¶
Примечание: Этот раздел не является исчерпывающим для бэкендов и брокеров.
Celery имеет возможность общаться и хранить данные с множеством различных бэкендов (хранилищ результатов) и брокеров (транспортов сообщений).
Redis¶
Redis может быть как бэкендом, так и брокером.
Как брокер: Redis хорошо работает для быстрой передачи небольших сообщений. Большие сообщения могут перегрузить систему.
В качестве бэкенда: Redis - это супербыстрое хранилище K/V, что делает его очень эффективным для получения результатов вызова задачи. Как и при проектировании Redis, вы должны учитывать предел памяти, доступной для хранения данных, и то, как вы будете работать с сохранением данных. Если сохранение результатов очень важно, рассмотрите возможность использования другой БД для бэкенда.
RabbitMQ¶
RabbitMQ - это брокер.
Как брокер: RabbitMQ обрабатывает большие сообщения лучше, чем Redis, однако если много сообщений поступает очень быстро, масштабирование может стать проблемой, и следует рассмотреть Redis или SQS, если только RabbitMQ не работает в очень больших масштабах.
В качестве бэкенда: RabbitMQ может хранить результаты через бэкенд rpc://
. Этот бэкенд создает отдельную временную очередь для каждого клиента.
Примечание: RabbitMQ (в качестве брокера) и Redis (в качестве бэкенда) очень часто используются вместе. Если требуется более гарантированное долговременное хранение результатов, рассмотрите возможность использования PostgreSQL или MySQL (через SQLAlchemy), Cassandra или бэкенда, определяемого пользователем.
SQS¶
SQS является брокером.
Если вы уже тесно интегрированы с AWS и знакомы с SQS, он представляет собой отличный вариант брокера. Он чрезвычайно масштабируем, полностью управляем и управляет делегированием задач аналогично RabbitMQ. Правда, ему не хватает некоторых функций брокера RabbitMQ, таких как worker remote control commands
.
SQLAlchemy¶
SQLAlchemy является бэкендом.
Он позволяет Celery взаимодействовать с MySQL, PostgreSQL, SQlite и другими. Это ORM, и это способ, с помощью которого Celery может использовать SQL DB в качестве бэкенда результатов. Исторически SQLAlchemy не является самым стабильным бэкендом результатов, поэтому при его выборе следует проявлять осторожность.