J'utilise célery 3.1.17 et redis comme courtier version 3.0.2 dans mon programme django. Il fonctionne sur Ubuntu 14.04.Tâches périodiques Celerybeat exécutées plusieurs fois si bloquées derrière une tâche de longue durée
Dans les paramètres, je définis le CELERYBEAT_SCHEDULE comme:
CELERYBEAT_SCHEDULE = {
'task1': {
'task': 'api.tasks.exsample.task1',
'schedule': crontab(hour=1, minute=0),
'args':()
},
'task2': {
'task': 'api.tasks.exsample.task2',
'schedule': crontab(hour=1, minute=30),
'args':()
},
'task3': {
'task': 'api.tasks.exsample.task3',
'schedule': crontab(hour=2, minute=0),
'args':()
},
'task4': {
'task': 'api.tasks.exsample.task4',
'schedule': crontab(hour=2, minute=30),
'args':()
},
'task5': {
'task': 'api.tasks.exsample.task5',
'schedule': crontab(hour=2, minute=40),
'args':()
},
'task6': {
'task': ''api.tasks.exsample.task6',
'schedule': crontab(hour=2, minute=50),
'args':()
},
}
est le problème ici:
Si les tâches terminées avant l'heure prévue de la tâche suivante, il fonctionne bien. Mais si une tâche dure longtemps, par exemple, task1 s'exécute pendant deux heures, alors les tâches suivantes s'exécuteront plusieurs fois chacune. Si je redémarre le céleri et le céleri, il y a parfois des tâches supplémentaires, mais parfois non.
Ça m'a beaucoup dérouté. J'ai lu les docs de céleri pendant un moment, mais je n'ai pas compris pourquoi. Quelqu'un pourrait-il me dire pourquoi cela se produit, comment le céleri gère son message et sa tâche si la file d'attente des tâches est bloquée ou si le céleri est redémarré?