Встречается на собеседованиях • сегодня

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

Для выполнения фоновых задач в Django есть несколько популярных подходов:

  1. Celery - наиболее мощное решение для асинхронных задач. Требует брокера сообщений (RabbitMQ, Redis). Пример:
python
# 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!")
  1. Django Background Tasks - более простое решение, хранит задачи в БД:
python
from background_task import background

@background(schedule=60)
def notify_user(user_id):
    user = User.objects.get(id=user_id)
    user.send_notification()
  1. RQ (Redis Queue) - легковесная альтернатива Celery:
python
import django_rq

def send_report():
    # generate report
    return "Done"

django_rq.enqueue(send_report)

Для простых задач можно использовать:

  • threading (не рекомендуется для прода)
  • asyncio (Django 3.1+)
  • Планировщик cron + management commands

Выбор зависит от сложности задач, требований к масштабируемости и инфраструктуры. Celery - самый надежный вариант для продакшена.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы