Ответ
В Celery брокер сообщений (message broker) — это центральный компонент, который выступает посредником между клиентом (кодом, который отправляет задачи) и воркерами (процессами, которые их выполняют).
Брокер является обязательным элементом для работы Celery.
Основные функции брокера:
- Прием и постановка задач в очередь: Клиент отправляет сообщение с задачей брокеру, который помещает его в очередь.
- Гарантия доставки: Брокер хранит задачу до тех пор, пока один из свободных воркеров не заберет её на выполнение. Это обеспечивает надежность системы.
- Маршрутизация задач: Позволяет направлять разные типы задач в разные очереди, например, для разделения по приоритету или типу нагрузки.
Популярные брокеры для Celery:
- RabbitMQ: Рекомендуемый выбор для production. Обеспечивает высокую надежность и гибкость.
- Redis: Отличный выбор за счет высокой скорости, но может быть менее надежным при сбоях по сравнению с RabbitMQ.
- Amazon SQS: Облачное решение, хорошо интегрируется в экосистему AWS.
Пример настройки:
from celery import Celery
# Приложение Celery настраивается с указанием URL брокера.
# В данном случае используется Redis.
app = Celery('tasks', broker='redis://localhost:6379/0')
@app.task
def send_email(to, subject):
print(f"Отправка письма на {to} с темой '{subject}'")
# ... логика отправки
# Клиентский код отправляет задачу в очередь через брокер
send_email.delay('user@example.com', 'Hello!')