Sobes.tech
Junior — Middle
90

Comment l'intégration de Celery avec Django est-elle réalisée et comment l'échange de tâches entre eux se produit-il?

Réponse de l'IA

sobes.tech IA

Интеграция 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-воркер её получает и выполняет.