1
私はdjangoプログラムでセロリー3.1.17とredisをブローカーバージョン3.0.2として使用しています。 Ubuntu 14.04で動作しています。設定で長時間実行されているタスクの後ろにスタックすると、Celerybeatの定期的なタスクが複数回実行される
が、私は同じようCELERYBEAT_SCHEDULE定義:ここで
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':()
},
}
問題です:
タスクは次のタスクのスケジュール時間前に終了した場合、それはすべての権利に動作します。しかし、タスクが長時間実行されると、task1は2時間実行され、その後のタスクはそれぞれ数回実行されます。セロリとセロビットを再起動すると、それでも時間外タスクが残っていることがありますが、時にはそうではありません。
私は多くを混乱させました。私はしばらくの間、セロリのドキュメントを読んでいましたが、理由を理解できませんでした。誰かがなぜこのようなことが起こったのか、タスクキューがブロックされたりセロリが再起動された場合のセロリのメッセージやタスクの管理方法について教えてください。