Bruno Desthuilliers a écrit :
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.
Attention sous Windows, si tu utilises pythonw.exe ou des scripts en .pyw:
pythonw.exe n'est pas une application console, ses sys.sdtout et sys.stderr ne sont connectés à rien.
Les premiers "print" se passent bien (même si on ne les voit pas).
Mais au bout de 1024 caractères, il doit y avoir un flush() interne, et boum.
--
Amaury