Как в Django выполнять background job

Python Senior Без компании
Как в Django выполнять background job
Ответы
Для выполнения фоновых задач в Django есть несколько популярных подходов: - **Celery** - наиболее мощное решение для асинхронных задач. Требует брокера сообщений (RabbitMQ, Redis). Пример: ``` # tasks.py from celery import shared_task @shared_task def send_email_task(user_id): user = User.objects.get(id=user_id) send_email(user.email, "Welcome!") ``` - **Django Background Tasks** - более простое решение, хранит задачи в БД: ``` from background_task import background @background(schedule=60) def notify_user(user_id): user = User.objects.get(id=user_id) user.send_notification() ``` - **RQ (Redis Queue)** - легковесная альтернатива Celery: ``` import django_rq def send_report(): # generate report return "Done" django_rq.enqueue(send_report) ``` Для простых задач можно использовать: - `threading` (не рекомендуется для прода) - `asyncio` (Django 3.1+) - Планировщик `cron` + management commands Выбор зависит от сложности задач, требований к масштабируемости и инфраструктуры. Celery - самый надежный вариант для продакшена.