Вопрос проверяет понимание организации асинхронных задач с использованием Celery в Python-приложениях.
Celery — это асинхронная очередь задач для Python, которая позволяет выполнять фоновые операции (отправка email, обработка изображений, генерация отчетов) вне основного потока веб-приложения. Это критически важно для поддержания быстрого ответа пользователю и масштабирования системы.
Основные компоненты: приложение Celery, брокер сообщений (RabbitMQ, Redis) и воркеры. Приложение определяет задачи, которые отправляются в брокер. Воркеры постоянно слушают брокер и выполняют задачи по мере поступления.
# tasks.py
from celery import Celery
app = Celery('tasks', broker='redis://localhost:6379/0')
@app.task
def send_email(recipient, message):
# Имитация отправки email
print(f'Sending to {recipient}: {message}')
return 'Sent'
# В другом модуле
from tasks import send_email
result = send_email.delay('user@example.com', 'Hello!')Celery стоит применять, когда требуется надежное выполнение длительных операций без блокировки пользовательского интерфейса, особенно в распределенных системах с высокой нагрузкой.