Бэкенды и брокеры

Релиз:

5.3

Дата:

авг. 04, 2023

Celery поддерживает несколько альтернатив транспортировки сообщений.

Инструкции брокера

Обзор брокера

Это сравнительная таблица поддержки различных транспортов, более подробную информацию можно найти в документации по каждому отдельному транспорту (см. Инструкции брокера).

Имя

Статус

Мониторинг

Дистанционное управление

RabbitMQ

Стабильный

Да

Да

Redis

Стабильный

Да

Да

Amazon SQS

Стабильный

Нет

Нет

Зоопарк

Экспериментальный

Нет

Нет

Экспериментальные брокеры могут быть функциональными, но у них нет специальных сопровождающих.

Отсутствие поддержки мониторов означает, что транспорт не реализует события, и поэтому Flower, celery events, celerymon и другие инструменты мониторинга на основе событий работать не будут.

Удаленное управление означает возможность проверять и управлять рабочими во время выполнения с помощью команд celery inspect и celery control (и других инструментов, использующих API удаленного управления).

Резюме

Примечание: Этот раздел не является исчерпывающим для бэкендов и брокеров.

Celery имеет возможность общаться и хранить данные с множеством различных бэкендов (хранилищ результатов) и брокеров (транспортов сообщений).

Redis

Redis может быть как бэкендом, так и брокером.

Как брокер: Redis хорошо работает для быстрой передачи небольших сообщений. Большие сообщения могут перегрузить систему.

See documentation for details

В качестве бэкенда: Redis - это супербыстрое хранилище K/V, что делает его очень эффективным для получения результатов вызова задачи. Как и при проектировании Redis, вы должны учитывать предел памяти, доступной для хранения данных, и то, как вы будете работать с сохранением данных. Если сохранение результатов очень важно, рассмотрите возможность использования другой БД для бэкенда.

RabbitMQ

RabbitMQ - это брокер.

Как брокер: RabbitMQ обрабатывает большие сообщения лучше, чем Redis, однако если много сообщений поступает очень быстро, масштабирование может стать проблемой, и следует рассмотреть Redis или SQS, если только RabbitMQ не работает в очень больших масштабах.

See documentation for details

В качестве бэкенда: RabbitMQ может хранить результаты через бэкенд rpc://. Этот бэкенд создает отдельную временную очередь для каждого клиента.

Примечание: RabbitMQ (в качестве брокера) и Redis (в качестве бэкенда) очень часто используются вместе. Если требуется более гарантированное долговременное хранение результатов, рассмотрите возможность использования PostgreSQL или MySQL (через SQLAlchemy), Cassandra или бэкенда, определяемого пользователем.

SQS

SQS является брокером.

Если вы уже тесно интегрированы с AWS и знакомы с SQS, он представляет собой отличный вариант брокера. Он чрезвычайно масштабируем, полностью управляем и управляет делегированием задач аналогично RabbitMQ. Правда, ему не хватает некоторых функций брокера RabbitMQ, таких как worker remote control commands.

See documentation for details

SQLAlchemy

SQLAlchemy является бэкендом.

Он позволяет Celery взаимодействовать с MySQL, PostgreSQL, SQlite и другими. Это ORM, и это способ, с помощью которого Celery может использовать SQL DB в качестве бэкенда результатов. Исторически SQLAlchemy не является самым стабильным бэкендом результатов, поэтому при его выборе следует проявлять осторожность.

Вернуться на верх