Le framework de tâches en arrière-plan
Django 6.0 intègre un framework de tâches en arrière-plan directement dans le noyau. Pour les cas d'usage simples (envoi d'e-mails, nettoyage, notifications), il n'est plus nécessaire d'installer Celery ou RQ : Django le fait nativement avec une base de données comme broker.
Configuration et utilisation
Le système utilise la base de données existante comme file d'attente. On définit une tâche avec le décorateur @task et on la lance avec .enqueue(). Un worker intégré consomme les tâches.
# settings.py
INSTALLED_APPS = [
...
'django.contrib.tasks',
]
# Après : python manage.py migrate
# Lancer le worker : python manage.py taskworker
# tasks.py
from django.contrib.tasks import task
from django.core.mail import send_mail
@task
def envoyer_email_bienvenue(user_id: int):
"""Envoi d'un e-mail de bienvenue en arrière-plan."""
from django.contrib.auth import get_user_model
User = get_user_model()
user = User.objects.get(pk=user_id)
send_mail(
subject="Bienvenue !",
message=f"Bonjour {user.first_name}, bienvenue sur notre site.",
from_email="noreply@example.com",
recipient_list=[user.email],
)
# views.py
from .tasks import envoyer_email_bienvenue
def inscription(request):
user = creer_utilisateur(request.POST)
# La tâche est mise en file, la réponse est immédiate
envoyer_email_bienvenue.enqueue(user.id)
return redirect('accueil')
Celery vs tâches intégrées
Le framework intégré est conçu pour les cas simples. Celery reste pertinent pour les workflows complexes, le routage de tâches, les retries avancés et les brokers haute performance (Redis, RabbitMQ).
