2010-10-22 5 views
6

Est-ce que quelqu'un connaît un fonctionnant et bien documenté implémentation d'un démon utilisant python? S'il vous plaît poster un lien ici si vous connaissez un projet qui répond à ces deux exigences.Mise en œuvre de démon en Python

+0

travail env? unix? –

+0

env est ubuntu 10.10, python 2.6 – RyanBrady

Répondre

4

Trois options que je peux penser Of-

  1. Faire une tâche cron qui appelle votre script. Cron est un nom commun pour un démon GNU/Linux qui lance périodiquement des scripts selon une planification que vous avez définie. Vous ajoutez votre script dans une crontab ou placez un lien symbolique dans un répertoire spécial et le démon gère le travail de lancement en arrière-plan. Vous pouvez en lire plus sur wikipedia. Il existe une variété de démons cron différents, mais votre système GNU/Linux devrait déjà l'avoir installé.
  2. Approche pythonique (une bibliothèque, par exemple) pour que votre script puisse se démoniser. Oui, il faudra une simple boucle d'événement (où vos événements sont déclenchés par le timer, éventuellement, fournis par la fonction de veille). Voici celui que je recommande & utilisation - A simple unix/linux daemon in Python
  3. Utilisez le module python multiprocessing. Le nitty-gritty d'essayer de fourchette un processus etc. sont cachés dans cette implémentation. C'est plutôt joli.

Je ne recommanderais pas 2 ou 3 'parce que vous répétez la fonctionnalité cron. Le paradigme du système Linux est de permettre à plusieurs outils simples d'interagir et de résoudre vos problèmes. À moins qu'il y ait des raisons supplémentaires pour lesquelles vous devriez créer un démon (en plus de déclencher périodiquement), choisissez l'autre approche. En outre, si vous utilisez daemonize avec une boucle et qu'un incident se produit, assurez-vous que vous avez des journaux qui vous aideront à déboguer. Également concevoir un moyen pour que le script recommence. Si le script est ajouté en tant que travail cron, il se déclenchera à nouveau dans le laps de temps que vous avez conservé.

+0

J'ai essayé # 2 sans succès. c'est comme si le démon se lançait lui-même, je ne peux plus référencer mon projet django. penser que c'est un problème de chemin. voir http://stackoverflow.com/questions/3992175/python-import-module-results-in-nameerror – RyanBrady

+0

avez-vous suivi l'exemple de code dans le lien que j'ai donné? Cela fonctionne bien pour moi. –

+0

oui, je l'ai suivi. téléchargé son daemon.py, sous-classé. lorsque j'essaie d'importer mon projet django, il échoue. – RyanBrady