Top.Mail.Ru

Асинхронные задачи в Django с помощью Celery

Асинхронные задачи в Django с помощью Celery

 

В современных веб-приложениях нередко возникает необходимость выполнять длительные или периодические задачи — отправка писем, обработка изображений, интеграция с внешними API и т. д. Если такие задачи выполнять в рамках обычного HTTP-запроса, это может привести к задержкам, сбоям или плохому пользовательскому опыту.

Решение — использовать Celery — мощную распределённую очередь задач, которая отлично интегрируется с Django.

🔧 Что такое Celery?

Celery — это асинхронный планировщик задач, работающий по принципу «производитель-потребитель». Он позволяет выносить тяжёлые задачи из основного потока выполнения приложения и обрабатывать их параллельно.

🚀 Пример использования Celery с Django

  1. Установка зависимостей:

    pip install celery redis
    
  2. Настройка 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',)
    
  3. Конфигурация брокера (например, Redis):

    В settings.py:

    CELERY_BROKER_URL = 'redis://localhost:6379/0'
    
  4. Создание задачи:

    В app/tasks.py:

    from celery import shared_task
    
    @shared_task
    def send_email_task(user_id):
        # логика отправки письма
        pass
    
  5. Вызов задачи:

    send_email_task.delay(user.id)
    

⏱ Периодические задачи

Для периодических задач можно использовать Celery Beat, который позволяет запускать задачи по расписанию (например, каждый час или каждый день в 10 утра).


💡 Используя Django + Celery, вы можете масштабировать свой проект, повысить отзывчивость и производительность приложения. Это обязательный инструмент для любого серьёзного backend-разработчика.

 

Автор:

45

Читайте также

0 комментариев

Бот: Здравствуйте! Я чат-бот веб-разработчика. Чем могу помочь в создании или доработке вашего сайта?