2010-09-23 14 views
3

J'ai suivi les instructions dans ce answer sur l'écriture d'un script Python à utiliser en tant que service. J'ai placé mon code de boucle dans def main(). J'ai installé le service avec le python my_script.py install. J'ai été en mesure de démarrer et d'arrêter le service à travers services.msc dans Windows XP.Comment faire pour qu'un script Python (installé en tant que service) survive à une déconnexion?

Il s'agit d'un programme de journalisation destiné à écrire des journaux tant que Windows est en cours d'exécution. Il ne devrait pas se soucier de qui ou si quelqu'un se connecte ou se déconnecte. Mon problème est que le service s'arrêtera lorsque je me déconnecterai. Comment puis-je le faire survivre aux déconnexions?

Répondre

2

Le système génère des signaux CTRL_CLOSE_EVENT, CTRL_LOGOFF_EVENT et CTRL_SHUTDOWN_EVENT lorsque l'utilisateur ferme la console, se déconnecte ou arrête le système afin que le processus ait la possibilité de nettoyer avant la fin. Pour vous assurer que vous détachez votre service de tout cela, vous devez utiliser le gestionnaire de commande pour régler cette façon:

win32api.SetConsoleCtrlHandler(lambda x: True, True) 

Départ: http://msdn.microsoft.com/en-us/library/ms685049(v=VS.85).aspx

Il suffit de vérifier qu'il ya recette qui illustre cette très bien pour toi.

+0

Si cette ligne devrait entrer? Ai-je raison de dire qu'il devrait être dans la classe «__init__» dans ce [extrait de code] (http://stackoverflow.com/questions/32404/can-i-run-a-python-script-as-a- service-dans-windows-comment/32440 # 32440)? – Kit

+0

@Kit: Voir mes réponses éditées ci-dessus. Je viens de voir qu'il y a une recette de python qui devrait vous aider dans tout cela. – pyfunc