Lors de la création d'applications web, il y a souvent des moments où vous devez effectuer des tâches longues. Par exemple :
- Lorsque l'utilisateur s'inscrit, vous devez envoyer un email de vérification.
- Vous devez exécuter automatiquement une tâche de nettoyage des données tous les jours à minuit.
- Lorsque l'utilisateur planifie une tâche, elle doit être exécutée à une heure déterminée.
Django fonctionne par défaut de manière à répondre immédiatement lorsqu'une demande est faite, donc il est nécessaire d'avoir un moyen de traiter les tâches longues de manière asynchrone. Et c'est là que Celery entre en jeu ! 🚀
Celery est un puissant outil qui vous aide à exécuter des tâches asynchrones dans Django, et Celery-Beat vous aide à exécuter des tâches spécifiques à des heures programmées.
1️⃣ Comment configurer des tâches planifiées avec Django-Celery-Beat
Il existe principalement deux manières de configurer des tâches planifiées avec Celery-Beat.
✅ (1) Configuration de la planification via l'interface graphique dans Django Admin
Django-Celery-Beat permet de configurer des tâches planifiées directement via l'interface graphique de Django Admin.
📌 Caractéristiques
- Sans codage, il est possible d'exécuter des tâches périodiques simplement en configurant.
- Dans la page d'administration Django, vous pouvez configurer et modifier des tâches périodiques via l'interface utilisateur.
- Cependant, il s'agit d'une configuration statique, donc il est difficile de la modifier dynamiquement en fonction des demandes des utilisateurs.
📌 Dans quels cas est-il utile ?
- Lorsque l'interaction entre l'application et l'utilisateur n'est pas nécessaire
- Ex) Tâche d'exécution automatique de sauvegarde de données à minuit chaque jour
- Ex) Tâche de mise à jour des données d'une API spécifique chaque lundi matin
✅ (2) Création dynamique de tâches planifiées via le code Python
Vous pouvez également créer des tâches planifiées directement via le code dans Celery-Beat.
📌 Caractéristiques
- Il est possible de créer dynamiquement des tâches planifiées en fonction des demandes des utilisateurs.
- Les tâches planifiées peuvent être créées, modifiées et supprimées via le code.
- Sans passer par l'Admin, vous pouvez enregistrer directement des tâches périodiques dans la vue.
📌 Dans quels cas est-il utile ?
- Lorsque des tâches planifiées sont nécessaires en fonction des demandes spécifiques des utilisateurs.
- Ex) Lorsqu'un utilisateur "fait une commande réservée", enregistrement d'une tâche qui annule automatiquement après 2 heures.
- Ex) Lorsqu'un utilisateur active la fonction "rappel par email", planification de l'envoi d'un email de rappel à une heure déterminée.
2️⃣ [Pratique] Créer une tâche planifiée avec du code Python
Étape 1 : Définir la tâche Celery
from celery import shared_task
@shared_task
def send_reminder_email(user_id):
# Ici, implémentez la logique pour envoyer l'email
print(f"📧 Email de rappel envoyé à l'utilisateur {user_id} !")
Étape 2 : Créer un objet PeriodicTask dans Django-Celery-Beat
from django_celery_beat.models import PeriodicTask, IntervalSchedule
import json
# 1️⃣ Créer un intervalle d'exécution (par exemple, toutes les 10 minutes)
schedule, created = IntervalSchedule.objects.get_or_create(
every=10, # toutes les 10 minutes
period=IntervalSchedule.MINUTES
)
# 2️⃣ Créer un PeriodicTask
task = PeriodicTask.objects.create(
interval=schedule, # intervalle d'exécution
name="Envoyer l'email de rappel", # nom de la tâche
task="myapp.tasks.send_reminder_email", # nom de la tâche Celery à exécuter
args=json.dumps([1]), # transmettre l'ID d'utilisateur (ici, c'est l'exemple de l'utilisateur 1)
)
🎯 Conclusion : Pour les développeurs Django, Celery est essentiel !
Celery est un outil essentiel qui permet de gérer des tâches asynchrones et de les exécuter de manière planifiée dans Django.
Particulièrement, en utilisant Celery-Beat, vous pouvez configurer des tâches périodiques et gérer dynamiquement la planification en fonction d'événements spécifiques.
📌 En résumé :
- Django-Celery-Beat est un outil puissant pour exécuter des tâches planifiées.
- Avec Django Admin (GUI), il est facile de configurer des tâches périodiques.
- En créant des tâches avec du code Python, vous pouvez gérer dynamiquement les tâches planifiées en fonction des demandes des utilisateurs.
- Pour les développeurs Django, il est essentiel de comprendre les concepts de base de Celery et de Celery-Beat !
🔥 Prochain épisode : Annonce
Dans cet épisode, nous avons brièvement présenté comment créer des tâches planifiées avec Celery-Beat via le code. Cependant, en pratique, vous utiliserez davantage de différents champs du modèle `PeriodicTask` pour gérer des logiques complexes.
Dans le prochain épisode, nous traiterons plus en détail le code pratique pour planifier diverses tâches et le rôle de chaque champ du modèle `PeriodicTask`.
Si vous souhaitez en savoir plus sur l'utilisation approfondie de Celery, n'oubliez pas de suivre le prochain épisode ! 🚀
Et si vous voulez voir plus d'articles sur Celery sur le blog,
veuillez consulter la liste des 'articles similaires' ci-dessous ou recherchez "Celery" dans la barre de recherche en haut à droite ! 😊
Add a New Comment