2016-04-08 14 views
1

Kereviz 3.1.17 kullanıyorum ve django programımda aracı 3.0.2 olarak redis kullanıyorum. Ubuntu 14.04'te koşuyor. İşte Celerybeat periyodik görevler uzun çalışan bir görevin arkasına takılırsa birden çok kez çalıştırılırsa

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':() 
    }, 
} 

sorundur:

görevleri sonraki göreve takvimi zamanından önce tamamlamak, tamam çalışır ayarlarında

, ben gibi CELERYBEAT_SCHEDULE tanımladı. Ancak bir görev uzun bir süre çalışırsa, örneğin, görev1 iki saat çalışır, daha sonra sonraki görevler her biri için birkaç kez yürütülür. Kereviz ve kereviz çalkalayıcısını yeniden başlatırsam, bazen de fazla mesai görevleri vardır, ama bazen değil.

Bu beni çok karıştırdı. Bir süredir kereviz belgelerini okudum, ama nedenini anlayamadım. Birisi bana bunun neden olduğunu söyler mi, görev kuyruğu engellenirse veya kereviz yeniden başlatılırsa kereviz mesajını ve görevini nasıl yönetir?

cevap

0

settings.py devamını yapılandırma eklemek

''' 
Task hard time limit in seconds. 
The worker processing the task will be killed and replaced with a new one when this is exceeded. 
''' 
CELERYD_TASK_TIME_LIMIT = 86400 
# CELERYD_TASK_TIME_LIMIT = 10 
''' 
Task soft time limit in seconds. 
The SoftTimeLimitExceeded exception will be raised when this is exceeded. The task can catch this to e.g. 
clean up before the hard time limit comes. 
''' 
CELERYD_TASK_SOFT_TIME_LIMIT = 80000 
İlgili konular