Le site de Steve

Accueil > Logiciel > Python > Un daemon UNIX en Python

Un daemon UNIX en Python

dimanche 30 décembre 2007, par Steve

Introduction

Cette classe permet de créer aisément un daemon python. Pour l’utiliser, il suffit de dériver de cette classe et de rajouter une méthode launch(self). Elle gère un système de verrou basé sur un fichier ainsi qu’une méthode permettant de tuer le daemon.

Les méthodes de la classe

- __init__

Cette méthode instancie la classe et elle initialise quelques variables.

- _daemonExists

Cette méthode teste l’existence du fichier verrou.

- _lock

Cette méthode crée le fichier verrou et elle écrit le pid du daemon.

- _unlock

Cette méthode ferme le fichier verrou puis elle efface le fichier verrou.

- _fork

Cette méthode crée le daemon.

- _run

Cette méthode doit être surchargé. Cette méthode effectue le travail en boucle. Elle doit vérifier que la variable "_loop" ne passe pas à"False".

- __signalHandler

Cette méthode est le gestionnaire de signaux. Seul le signal SIGTERM est intercepté afin de pouvoir terminer le daemon proprement. Elle modifie la variable "_loop" à"False".

- setOutput

Cette méthode permet de rediriger les flux stdout et stderr vers des fichiers que l’on aura crée.

- launch

Cette méthode effectue tous les appels nécessaires àla création du daemon. Elle finit par appeler la méthode "_run". Si le daemon est arrêté, elle restaure les flux et supprime le fichier verrou grâce àla méthode "_unlock".

Exemple d’utilisation

Cette exemple écrit, dans le fichier "/var/log/pyTest.log", l’heure courante ainsi que le "pid" du processus. Cette opération est effectué toutes les cinq secondes.

Conclusion

Cette classe devrait permettre de développer très rapidement des scripts Python qui seront utilisés comme daemon.

Messages

Un message, un commentaire ?

modération a priori

Ce forum est modéré a priori : votre contribution n’apparaîtra qu’après avoir été validée par un administrateur du site.

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.