Je traite avec un serveur écrit Python qui se verrouille et cesse de fonctionner, y compris la journalisation. Je me demande s'il y a un python équivalent au signal "Kill -3" de Java qui imprime au moins la standing actuelle. P>
3 Réponses :
import signal, traceback
def quit_handler(signum,frame):
traceback.print_stack()
signal.signal(signal.SIGQUIT,quit_handler)
Si le serveur "se verrouille", il n'obtient pas nécessairement un signal Sigquit, je suppose.
@Andidog: Je pense que vous êtes censé utiliser tuer (1) code> pour l'envoyer un lorsque vous détectez manuellement qu'il s'est enfermé.
Utilisez le module Cela fonctionne en dehors de la manipulation du signal de la boucle d'interpréteur de Python au niveau C de sorte qu'il fonctionnera même lorsque l'interprète Python lui-même est suspendu à attendre quelque chose d'autre. P> Voir aussi:
Comme vous indiquez, Faulthandler code> est inclus dans la bibliothèque standard de Python 3.3+
Kill -2 code> Envoie SIGINT, qui au moins sur Linux semble traduire en une exception code> keyboardinterrupter code>. Cela pourrait causer une trace de pile à larguer quelque part. Cela dépend du serveur bien sûr.