Ответ
Запуск Celery требует как минимум трех компонентов: приложения с задачами, брокера сообщений (например, Redis или RabbitMQ) и самого воркера, который будет выполнять задачи.
1. Установка зависимостей
Установите Celery и клиент для брокера (в данном примере Redis).
pip install celery redis
2. Определение задач
Создайте файл tasks.py, где будет настроено приложение Celery и определены фоновые задачи.
# tasks.py
from celery import Celery
import time
# Инициализация Celery с указанием имени приложения и URL брокера
app = Celery('tasks', broker='redis://localhost:6379/0')
@app.task
def add(x, y):
time.sleep(5) # Имитация долгой операции
return x + y
3. Запуск воркера
Откройте терминал и запустите воркер. Он подключится к брокеру и будет ожидать поступления задач.
celery -A tasks worker --loglevel=info
-A tasks: Указывает на модуль (tasks.py), где находится экземпляр Celery (app).worker: Команда для запуска воркера.--loglevel=info: Устанавливает уровень логирования для отладки.
4. Вызов задачи из основного кода
Теперь в вашем основном приложении (например, в Django или FastAPI) вы можете асинхронно вызывать задачу с помощью метода .delay().
from tasks import add
# Задача не блокирует основной поток, а отправляется в очередь брокера
result = add.delay(4, 4)
print(f"Task sent! ID: {result.id}")
Воркер получит задачу из очереди и выполнит ее в фоновом режиме.
Для периодических задач (Celery Beat):
Если вам нужно запускать задачи по расписанию, дополнительно запускается планировщик beat:
celery -A tasks beat --loglevel=info