Méta-MCI (MVP) a écrit :
Bonjour !
J'ai un script, qui tourne sur un serveur, tous les 1/4 h.
Il fonctionne bien, sauf, de temps en temps (une ou deux fois par mois), où il provoque cette erreur :
File "C:\serv.py", line 69, in TCPersistEnvoiTxt
print "va envoyer"
IOerror: [Errno 9] Bad file descriptor
A chaque fois, le script étant relancé de zéro (tache planifiée), je ne comprends pas pourquoi un simple print peut provoquer une erreur
print écrit sur le flux de sortie standard (ou, plus exactement, sur le flux lié à sys.stdout, quel qu'il soit), qui est un file descriptor. Si ce file descriptor est en vrac pour une raison ou une autre...
Accessoirement, sys.stdout est destiné à recevoir les sorties *normales* d'un programme. Les erreurs, traces et autres devraient aller sur sys.stderr.
(en plus, moins d'une fois sur mille).
Précisions :
Windows-2003-server, qui sert essentiellement en tant que serveur de fichiers
Python 2.5.1
Même en cas d'erreur les lancements suivants du script fonctionnent bien (la tache planifiée lance un nouveau processus à chaque fois).
Une idée ?
Est-ce que par hasard la stdout du système serait redirigée vers un fichier de log lors de l'appel du script ? Si oui, le pb doit être par là.
Sinon, attrape l'exception et logue (dans un fichier) un rapport sur l'état de sys.stdout.
Désolé, pas mieux.