Lorsque vous utilisez Django Celery Beat pour planifier des tâches, vous pouvez envisager d'utiliser one-off: True pour vous assurer que la tâche ne s'exécute qu'une seule fois. Cependant, des questions fréquentes se posent concernant l'état du champ enabled après l'exécution de la tâche. Dans cet article, nous allons examiner le fonctionnement de one-off, le rôle du champ enabled, et comment les utiliser efficacement.
1. Rôle de one-off dans Celery Beat
L'option one-off dans Celery Beat est utilisée pour garantir que les tâches planifiées ne s'exécutent qu'une seule fois. Une tâche configurée avec one-off: True ne sera pas réexécutée après son exécution, et Celery Beat exclura cette tâche de la liste d'exécution.
Relation entre one-off et les méthodes de planification
- Planification
clocked:Cette méthode exécute une tâche à une heure précise. Une fois le moment de l'exécution passé, la tâche ne sera pas réexécutée, donc elle se comporte de manière similaire à
one-off.En ajoutant
one-off: True: Cela garantit que la tâche ne se réactive pas même après l'heure d'exécution. - Plans
intervaletcrontab:Ces plans sont conçus pour exécuter les tâches périodiquement.
Lorsque
one-off: Trueest défini: La tâche ne s'exécutera qu'une seule fois, indépendamment de cette périodicité.
2. Changements d'état de enabled après l'exécution
Comportement par défaut du champ enabled
Après l'exécution d'une tâche, la valeur de enabled ne change pas automatiquement. Cela signifie que, même si une tâche est configurée avec one-off: True, enabled restera à True. Cela a les implications suivantes :
- Celery Beat ne considère que les tâches où
enabledest àTruepour la planification. - Avec la configuration
one-off, la tâche est exclue de la planification après son exécution.
Par conséquent, même sans modifier explicitement le champ enabled, il n'y a pas de risque que la tâche se réexécute.
3. Faut-il changer enabled en False ?
Raisons de ne pas changer
- Celery Beat gère la non-réexécution des tâches uniquement avec la configuration
one-off: True. - Si les développeurs comprennent et gèrent clairement l'état des tâches, il est sûr de ne pas modifier
enabled.
Quand il est avantageux de changer
- Renforcer la sécurité:
Empêche quelqu'un d'éventuellement retirer ou modifier la configuration
one-offpar inadvertance. - Clarifier l'intention:
Indique explicitement que la tâche est terminée, facilitant la compréhension pour le gestionnaire par la suite.
- Optimiser la gestion des ressources:
Si de nombreuses tâches sont dans l'état
enabled: True, cela peut aider à réduire la charge sur les requêtes de base de données de Celery Beat.
Comment changer enabled
Après l'exécution d'une tâche, vous pouvez utiliser une logique additionnelle pour définir enabled à False. Par exemple :
from django_celery_beat.models import PeriodicTask
def my_task():
# Effectuer le contenu de la tâche
...
# Changer la valeur de enabled en False après exécution
task_name = "my_task_name"
task = PeriodicTask.objects.get(name=task_name)
task.enabled = False
task.save()
4. Un programme clocked est-il suffisant ?
Le plan clocked est conçu pour exécuter une tâche une fois à une heure précise. Par conséquent, une fois l'heure d'exécution passée, la tâche ne sera pas réexécutée, même sans one-off: True.
- Lorsque seul
clockedest utilisé:La tâche sera automatiquement désactivée après le temps d'exécution.
Cependant, des paramètres supplémentaires peuvent être nécessaires pour éviter que la tâche échoue ou soit réactivée manuellement.
clocked+one-off: True:Assure que la tâche ne se réactive pas et clarifie l'intention.
5. Conclusion : Guide pratique de configuration
- Si la tâche doit être exécutée une seule fois: Configurez
one-off: Truepour garantir la sécurité. - Il n'est généralement pas nécessaire de changer
enabled. Cependant, selon le besoin, vous pouvez le changer enFalsepour plus de sécurité et de maintenabilité. - Dans les cas où
clockedest suffisant: Il n'est pas obligatoire de définirone-off.
Une bonne utilisation des options de configuration de Celery Beat peut rendre la gestion des tâches beaucoup plus efficace et sécurisée. Trouvez la configuration optimale pour vos exigences de projet !
Aucun commentaire.