Как Celery взаимодействует с Django
Python
Senior
Без компании
Как Celery взаимодействует с Django
Ответы
Celery интегрируется с Django через настройки в `settings.py`. Основные шаги:
- Установка пакетов:
```
pip install celery redis # redis как брокер сообщений
```
- В `settings.py` добавляем конфигурацию:
```
CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
```
- Создаем файл `celery.py` в папке проекта (рядом с `settings.py`):
```
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')
app = Celery('project')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
```
- В `__init__.py` проекта добавляем:
```
from .celery import app as celery_app
__all__ = ['celery_app']
```
- Создаем задачи в `tasks.py` любого приложения:
```
from celery import shared_task
@shared_task
def send_email_task():
# логика отправки email
return "Email sent!"
```
Запуск Celery worker:
```
celery -A project worker -l info
```
Особенности:
- Использует брокеры (Redis, RabbitMQ) для очередей задач
- Интегрируется с Django ORM
- Поддерживает отложенное выполнение (`task.apply_async(countdown=3600)`)
- Работает с Django-моделями в задачах