2016-05-28 1 views
1

Imaginez une tâche dans celery schedule, qui s'exécute chaque minute et envoie l'e-mail en cas d'erreur. S'il y a une erreur, c'est plus souvent persistant, comme l'indisponibilité de la base de données, donc la boîte mail est spammée avec des emails similaires.Arrêter de réessayer une tâche de céleri périodique en cas d'erreur

Quelles sont les solutions de contournement possibles?

Répondre

1

Vous pouvez utiliser un drapeau pour que le programme sait si elle a déjà envoyé un e-mail d'alarme, qui obtient redéfinie sur False une fois la base de données est de retour en ligne

Le code est juste un exemple du concept .. il est sans rapport avec céleri, mais je suis sûr que vous pouvez le travailler pour répondre à vos besoins

database_flag = False 

database = get_database() 

while True: 
    if not database.is_faulted(): 
     database_flag = False 
    elif database.is_faulted() and not database_flag: 
     send_email() 
     database_flag = True 

    time.sleep(60)