IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

crontab - supprimer le cron dans bloc try except pour n'être informé qu'une seule fois


Sujet :

Python

  1. #1
    Membre averti
    Femme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Octobre 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2019
    Messages : 20
    Par défaut crontab - supprimer le cron dans bloc try except pour n'être informé qu'une seule fois
    Bonjour ,

    J'ai développé une application qui tourne en infinie . et pour ne pas utiliser une boucle (while(True)) j'ai planifié l' exécution de l'application dans crontab ( elle s’excuse chaque 5 min). J'ai mis un bloc try except ( en cas de problème je reçois un mail) . Ma question : si il y a un problème dans le programme je vais recevoir chaque 5 min un mail alors que je veux être informé une seule fois , qu'est ce que je dois faire supprimer le cron dans le bloc try except ?? si oui comment ??
    Merci beaucoup

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 790
    Par défaut
    Citation Envoyé par _junior_ Voir le message
    Ma question : si il y a un problème dans le programme je vais recevoir chaque 5 min un mail alors que je veux être informé une seule fois , qu'est ce que je dois faire supprimer le cron dans le bloc try except ?? si oui comment ??
    Ca dépend de la nature du problème... Par exemple, si c'est un problème réseau peut être qu'en ré-essayant plus tard çà ira mieux. Donc, il va falloir noter le nombre de fois que c'est partie en erreur avant d'abandonner (et expédier un mail).
    Ce qui suppose un fichier externe qui "note" le nombre d'essais consécutifs avant l'abandon et puisqu'on va toujours lire ce fichier là pour savoir où on en est plus besoin de toucher à la crontab.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Femme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Octobre 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2019
    Messages : 20
    Par défaut
    Je vous remercie pour votre aide c'est utile. Vous avez totalement raison. l'application utilise des protocoles réseaux parfois l'erreur est juste temporaire. Je vais faire un fichier qui note le nombre de fois que le programme a rencontré un problème et à partir d'un certain seuil (par exemple 10 j'envois un mail ) c'est ça l'idée ?

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 790
    Par défaut
    Citation Envoyé par _junior_ Voir le message
    Je vais faire un fichier qui note le nombre de fois que le programme a rencontré un problème et à partir d'un certain seuil (par exemple 10 j'envois un mail ) c'est ça l'idée ?
    voilà... Et quand vous récupérez 11, le programme ne fait rien en attendant d'avoir à recréer le fichier.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 874
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par _junior_ Voir le message
    Je vais faire un fichier qui note le nombre de fois que le programme a rencontré un problème et à partir d'un certain seuil (par exemple 10 j'envois un mail )
    Attention aux risques de collision (Unix/Linux étant multi-users, on est en théorie en droit d'exécuter le même programme plusieurs fois en parallèle). Même si dans ce cas précis ça n'arrivera pas (programme dédié root ou cron), c'est un réflexe à avoir en permanence à l'esprit. La commande Linux "lockfile" (ou divers équivalents Python comme zc.lockfile ou fasteners) peuvent être d'une grande aide pour ça...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre averti
    Femme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Octobre 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2019
    Messages : 20
    Par défaut
    Bonsoir,

    Merci encore une fois pour votre réponse... Mais je veux savoir comment je peux demander au programme de ne rien faire est ce que je fais un sleep(24h) par exemple ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    try 
        # bloc instruction 
    except :
        # lecture d'un paramètre X dans un fichier param.ini 
        if X<10 : 
             x=x+1
             # changer la valeur de X dans le fichier param.ini 
         else :
             # envoyer mail 
             X=0 
             # changer la valeur de X dans le fichier param.ini 
             sleep(24*60)
    est ce que sleep me permet de faire l'affaire sachant que le cron chaque 5 min ??

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 790
    Par défaut
    Citation Envoyé par _junior_ Voir le message
    est ce que sleep me permet de faire l'affaire sachant que le cron chaque 5 min ??
    C'est une question à laquelle vous devriez pouvoir répondre par vous même en testant un peu avec cron ce qu'il se passe lorsqu'une tâche activée toutes les 5mns se termine (par exemple) une heure après.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 874
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par _junior_ Voir le message
    Mais je veux savoir comment je peux demander au programme de ne rien faire est ce que je fais un sleep(24h) par exemple ??
    Tandis que le cron se charge de la relancer à chaque fois toutes les 5mn ? Joli coup Callaghan. Ca va pas effondrer ta machine ça !!!

    Citation Envoyé par _junior_ Voir le message
    et pour ne pas utiliser une boucle (while(True)) j'ai planifié l' exécution de l'application dans crontab ( elle s’excuse chaque 5 min).
    Il faut un peu organiser ta pensée garçon. Soit tu veux un truc qui se lance à intervalles réguliers, soit tu veux un truc qui tourne en boucle infinie. Mais si tu programmes les deux à la fois...
    Et sinon je la comprends ton appli. Elle a bien raison de s'excuser d'être comme elle est. Sauf que c'est pas sa faute la pauvre...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Membre averti
    Femme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Octobre 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2019
    Messages : 20
    Par défaut
    Merci pour votre réponse...je m'explique peut être mon message n'était pas trop clair (désolé) ...

    Mon application doit consulter une boite mail chaque 5 min et faire un traitement (c'est traitement à l'infinie). Comme une première idée j'ai pensé à faire une boucle infinie et puis mettre sleep(300). et puisque j'ai déployé l’application sur un serveur unix j'ai pensé à utiliser les crons. J'ai mis un bloc try except et en cas de problème l’application m'envoie un mail pour m'informer... Ma question est la suivante : Comment je peux être notifiée par le problème une seule fois sachant qu'elle est programmé automatiquement chaque 5 min par cron et je n'ai pas encore résolu le problème ??
    Merci pour votre aide

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 874
    Billets dans le blog
    1
    Par défaut
    Si elle est lancée toutes les 5mn par le cron alors tu n'as pas besoin de la programmer pour qu'elle boucle. Te suffit de faire une application "one shot". Toutes les 5mn elle se lancera, consultera la boite mail et fera le traitement puis s'arrêtera.

    Maintenant reste la question "être notifié par un souci éventuel une seule fois" et là je m'interroge. En quoi ça te gêne d'être informé à chaque fois qu'elle n'aura pas pu faire le traitement ? C'est quand-même plus naturel d'avoir l'info
    • 10h15 traitement ok
    • 10h20 traitement échoué parce que pas de mail
    • 10h25 traitement échoué parce que client non accessible
    • 10h30 traitement ok
    • ...

    C'est comme ça que fonctionnent généralement tous les outils automatiques quoi.

    Mais si c'est vraiment ce que tu veux alors on t'a déjà donné la solution. Au premier souci tu crées un fichier verrou dans /tmp et tu envoies le mail. Au souci suivant, comme le fichier verrou existe déjà alors pas de mail.
    Et comme le fichier se trouve dans /tmp, au reboot de ta machine tout est réinitialisé.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  11. #11
    Membre averti
    Femme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Octobre 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2019
    Messages : 20
    Par défaut
    Bonjour,

    Merci beaucoup ... c'est utile
    Très bonne journée

  12. #12
    Membre averti
    Femme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Octobre 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2019
    Messages : 20
    Par défaut
    Dans un fichier de paramètres j'ai consacrées deux variable x, y un numérique et l'autre booléen.
    En cas d'erreur : si x< à un seuil =>x++ ( je prends en considération les erreurs temporaires de réseaux)
    si le seuil est atteint et si y==True alors j'envois un mail et je change la valeur de y dans le fichier y=False
    pour la prochaine exécution je fais rien ( j'utilise exit () dans else)

    Je ne peux pas appliquer l'idée du fichier car mon serveur est une machine virtuelle qui est en marche tout le temps ( pas de reboot)

    Merci

  13. #13
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 874
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par _junior_ Voir le message
    Je ne peux pas appliquer l'idée du fichier car mon serveur est une machine virtuelle qui est en marche tout le temps ( pas de reboot)
    Machine virtuelle ou machine réelle ne change rien (ça marche pareil). Et le reboot n'était qu'une possibilité parmis d'autres (d'autant plus que tu peux aussi parfaitement désirer qu'un reboot n'efface pas le fichier !!!). Tu peux par exemple effacer le fichier manuellement, tu peux aussi prévoir une option dans ton programme qui, si elle est positionnée, écrase le fichier, etc etc. C'était juste pour te donner des idées.

    Le plus grave c'était ce programme tournant en boucle infinie et étant relancé toutes les 5mn...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Visibilité de mon tableau dans bloc try catch
    Par erox44 dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 18/05/2010, 16h13
  2. Ajouter / supprimer un cron dans PLESK avec PHP
    Par Dark Cid dans le forum Serveurs (Apache, IIS,...)
    Réponses: 2
    Dernier message: 31/10/2008, 15h03
  3. Bloc try Except
    Par zemeilleurofgreg dans le forum Bases de données
    Réponses: 16
    Dernier message: 04/07/2008, 15h29
  4. Porté de variable dans un try except
    Par japey dans le forum Général Python
    Réponses: 4
    Dernier message: 23/05/2007, 13h55
  5. bloc try/except et API windows
    Par jakouz dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 24/02/2005, 13h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo