Auteur Sujet: Script python lancé en double, pourquoi  (Lu 9000 fois)

0 Membres et 1 Invité sur ce sujet

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 078
  • Paris (75)
Script python lancé en double, pourquoi
« Réponse #36 le: 17 novembre 2020 à 11:23:43 »
y'a la solution 'brutale' mais ca peut avoir des effets secondaires:

from signal import signal, SIGPIPE, SIG_DFL
signal(SIGPIPE,SIG_DFL)

a ajouter au début de ton script

Darkjeje

  • Abonné Free adsl
  • *
  • Messages: 592
  • Free VDSL2 Issy-les-Moulineaux (92)
Script python lancé en double, pourquoi
« Réponse #37 le: 28 novembre 2020 à 22:43:18 »
y'a la solution 'brutale' mais ca peut avoir des effets secondaires:

from signal import signal, SIGPIPE, SIG_DFL
signal(SIGPIPE,SIG_DFL)

a ajouter au début de ton script

Je n'ai pas vue de changement positif avec cela.
En fait à chaque plantage, je n'avais plus rien d'inscrit dans mes logs.

J'ai modifié mon script et je suis revenu à la situation antérieure au plantage de mon Rasp, c'est à dire que mon script est relancé environ toutes les 4 à 5 heures, et cela toujours avec le message peu clair de BrokenPipeError: [Errno 32] Broken pipe

J'ai testé en lançant le script depuis une fenêtre Putty à distance. Le script a tourné 9 heures sans planté et je l'ai donc arrêté.
As-tu une idée de ce qui pourrait provoquer une erreur Broken pipe lorsque le script est lancé depuis cron ou relancé depuis un autre script python, mais ne pas planté lorsqu'il est lancé via une fenêtre Putty ?
C'est très étonnant je trouve.

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 078
  • Paris (75)
Script python lancé en double, pourquoi
« Réponse #38 le: 29 novembre 2020 à 13:07:18 »
J'ai testé en lançant le script depuis une fenêtre Putty à distance. Le script a tourné 9 heures sans planté et je l'ai donc arrêté.
As-tu une idée de ce qui pourrait provoquer une erreur Broken pipe lorsque le script est lancé depuis cron ou relancé depuis un autre script python, mais ne pas planté lorsqu'il est lancé via une fenêtre Putty ?
C'est très étonnant je trouve.

oui si l'erreur est sur un "print" et qu'il y a une redirection ca peut expliquer cela.

comme indiqué déja la bonne solution est "de gérer correctement les erreurs". (avec des try).

si un "print" plante avec ce message, c'est en principe parce que la sortie est fermée ou pas dispo (buffer plein).

apres on n'a pas plus de détails (script complet, comment il est lancé en détail,  message d'erreur détaillé) pour t"éclairer plus.

Darkjeje

  • Abonné Free adsl
  • *
  • Messages: 592
  • Free VDSL2 Issy-les-Moulineaux (92)
Script python lancé en double, pourquoi
« Réponse #39 le: 05 décembre 2020 à 18:03:54 »
oui si l'erreur est sur un "print" et qu'il y a une redirection ca peut expliquer cela.

comme indiqué déja la bonne solution est "de gérer correctement les erreurs". (avec des try).

si un "print" plante avec ce message, c'est en principe parce que la sortie est fermée ou pas dispo (buffer plein).

apres on n'a pas plus de détails (script complet, comment il est lancé en détail,  message d'erreur détaillé) pour t"éclairer plus.

Merci beaucoup pour ton aide.
Ton dernier message m'a mis la puce à l'oreille, lorsque tu as mentionné le buffer plein.

Les dernières erreurs étaient sur des print.
J'ai supprimé tous les print hors erreur et cela fait maintenant 4 jours que le script n'a pas planté.
Je suppose donc que l'accumulation de print à chaque commande de la domotique finissait par saturer le buffer et plantait le script.

Un grand merci à toi qui m'a permis de comprendre les fonctions et ainsi m'améliorer un petit peu en Python  :D