Sobes.tech
Back to questions
Junior — Middle
62

Каким образом осуществляется интеграция Celery с Django и как происходит обмен задачами между ними?

Answer from AI

sobes.tech AI

Интеграция Celery с Django обычно происходит через создание отдельного файла конфигурации Celery в проекте Django, где настраивается объект Celery с указанием брокера сообщений (например, Redis или RabbitMQ). В Django в settings.py указываются параметры брокера и другие настройки.

Обмен задачами происходит через брокер сообщений: Django отправляет задачи в очередь, а Celery-воркеры их забирают и выполняют асинхронно. Задачи описываются как функции с декоратором @shared_task или @app.task.

Пример настройки:

# myproject/celery.py
from celery import Celery
import os

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
app = Celery('myproject')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()

В tasks.py приложения:

from celery import shared_task

@shared_task
def add(x, y):
    return x + y

В Django коде можно вызвать задачу асинхронно:

add.delay(4, 6)

Таким образом, Django отправляет задачу в брокер, Celery-воркер её получает и выполняет.