В современных веб-приложениях нередко возникает необходимость выполнять длительные или периодические задачи — отправка писем, обработка изображений, интеграция с внешними API и т. д. Если такие задачи выполнять в рамках обычного HTTP-запроса, это может привести к задержкам, сбоям или плохому пользовательскому опыту.
Решение — использовать Celery — мощную распределённую очередь задач, которая отлично интегрируется с Django.
🔧 Что такое Celery?
Celery — это асинхронный планировщик задач, работающий по принципу «производитель-потребитель». Он позволяет выносить тяжёлые задачи из основного потока выполнения приложения и обрабатывать их параллельно.
🚀 Пример использования Celery с Django
-
Установка зависимостей:
pip install celery redis
-
Настройка Celery в Django-проекте:
myproject/celery.py
:import os from celery import Celery os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings') app = Celery('myproject') app.config_from_object('django.conf:settings', namespace='CELERY') app.autodiscover_tasks()
В
__init__.py
:from .celery import app as celery_app __all__ = ('celery_app',)
-
Конфигурация брокера (например, Redis):
В
settings.py
:CELERY_BROKER_URL = 'redis://localhost:6379/0'
-
Создание задачи:
В
app/tasks.py
:from celery import shared_task @shared_task def send_email_task(user_id): # логика отправки письма pass
-
Вызов задачи:
send_email_task.delay(user.id)
⏱ Периодические задачи
Для периодических задач можно использовать Celery Beat, который позволяет запускать задачи по расписанию (например, каждый час или каждый день в 10 утра).
💡 Используя Django + Celery, вы можете масштабировать свой проект, повысить отзывчивость и производительность приложения. Это обязательный инструмент для любого серьёзного backend-разработчика.
Автор: Евгений Морковин
0 комментариев