2014-07-07 3 views
1

J'ai une tâche de céleri périodique en cours d'exécution une fois par minute, comme suit:Dynamiquement changer l'intervalle périodique de la tâche de céleri à l'exécution

#tasks.py 
@periodic_task(run_every=(crontab(hour="*", minute="*", day_of_week="*")))   
def scraping_task(): 
    result = pollAPI() 

où la fonction pollAPI(), comme vous l'avez deviné du nom, les sondages un API L'erreur est que l'API a une limite de débit qui n'est pas divulguée, et donne parfois une réponse d'erreur, si cette limite est atteinte. Je voudrais être capable de prendre cette réponse, et si la limite est atteinte, diminuer dynamiquement l'intervalle de tâche périodique (ou même mettre la tâche sur pause pendant un moment). Est-ce possible?

J'ai lu dans les docs sur l'écrasement de la is_due méthode de schedules, mais je suis perdu sur exactement quoi faire pour donner le comportement que je cherche ici. Quelqu'un pourrait-il aider?

Répondre

0

Vous pouvez essayer d'utiliser celery.conf.update pour mettre à jour votre CELERYBEAT_SCHEDULE.

Questions connexes