Comment envoyez-vous la sortie d'un script upstart à un terminal pour trouver des traces en code python? Cela me prend pour toujours de faire des choses sans retraits qui ne prenaient qu'une seconde. Je dois passer plusieurs appels d'écriture de fichier pour rechercher les erreurs. Ce qui a pris la seconde pour trouver avant avec un retraçage se transforme en plusieurs minutes minutes. C'est misérable. Cela dure depuis quelques semaines maintenant et j'en ai marre. certains pourraient en parler s'il vous plaît. J'ai l'impression d'utiliser à nouveau l'assemblage sans débogueur.
16
/var/log/upstart
. Vraiment utile, merci.Il y a une section entière sur les techniques de débogage dans le livre de recettes Upstart . La chose la plus simple que vous puissiez faire est d'ajouter
--debug
à vos arguments de noyau, ce qui augmentera la verbosité de upstart et tout vider dans syslog. Oui, le débogage est complexe, c'est le reflet de la complexité nette requise pour créer un système d'initialisation parallélisé. Je suis sûr qu'il y a place à amélioration.la source
Lorsque j'écris un démon python, j'attrape toutes les exceptions et les jette ensuite dans le fichier journal. Je l'utilise non seulement pour le débogage, mais aussi en production. J'ai un petit script que je lance tous les matins et qui cherche quelque chose de bouleversant dans les journaux.
Cela aide également à maintenir le démon en marche, bien sûr.
Quelques exemples de code (je supprime les parties non intéressantes):
Où actua () est le véritable démon (il écrit aussi pour se connecter). Notez que j'ai également une variable DEBUG dans un fichier de paramètres, quand c'est vrai, je ne bifurque pas le démon donc il s'exécute sur la console.
Démons
Les démons sont l'équivalent unix des services Windows. Ce sont des processus qui s'exécutent en arrière-plan indépendamment des autres processus. Cela signifie que leur père est généralement init et qu'ils sont détachés de tout tty. Comme ils sont indépendants, il n'y a pas de place prédéfinie pour mettre leur sortie.
Il existe de nombreuses bibliothèques et extraits de code Python pour créer un démon, dans l'exemple ci-dessus, j'utilise ma propre fonction, qui combine certaines idées des versions de Steinar Knutsens et Jeff Kunces. C'est aussi simple que possible, notez que je bifurque deux fois .
la source