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
Répondre
Trois options que je peux penser Of-
- 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é.
- 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
- 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é.
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
avez-vous suivi l'exemple de code dans le lien que j'ai donné? Cela fonctionne bien pour moi. –
oui, je l'ai suivi. téléchargé son daemon.py, sous-classé. lorsque j'essaie d'importer mon projet django, il échoue. – RyanBrady
Si vous voulez simplement exécuter un démon, pensez à Supervisor, un démon qui contrôle et gère lui-même les démons.
Si vous voulez regarder le nitty-gritty, vous pouvez consulter Supervisor's launch script ou certaines des réponses à cette lazyweb request.
Vérifiez ce lien pour un démon double fourche: http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/
Le code est lisible et bien documenté. Vous voulez jeter un oeil au chapitre 13 du livre de W. Richard 'Programmation avancée dans l'environnement UNix' pour des informations détaillées sur les démons Unix.
- 1. Mise en œuvre TextImageRelation
- 2. mise en œuvre FIFO
- 3. mise en œuvre GetHashCode
- 4. Mise en œuvre Saferpay
- 5. trait mise en œuvre
- 6. Mise en œuvre de la liste de diffusion Django/Python
- 7. Mise en œuvre WCF
- 8. GWT mise en œuvre
- 9. Saferpay Mise en œuvre
- 10. mise en œuvre de IntSetLIst
- 11. Mise en œuvre de UnitOfWork
- 12. Boussole de mise en œuvre
- 13. de mise en œuvre OpenID
- 14. Mise en œuvre de ReadDirectoryChangesW
- 15. modèle de mise en œuvre du python sys
- 16. mise en œuvre de pagerank en Java
- 17. en-tête de classe + mise en œuvre
- 18. détails de mise en œuvre d'expression régulière
- 19. Mise en œuvre d'e-mails de notification
- 20. Mise en œuvre du fil
- 21. Fedex & UPS mise en œuvre
- 22. JavaScript mise en œuvre WYSIWYG
- 23. Mise en œuvre HashMap personnalisée
- 24. Mise en œuvre EigenSolver efficace
- 25. mergesort C mise en œuvre
- 26. WPF mise en œuvre INotifyPropertyChanged
- 27. BlackBerry LongClickListener mise en œuvre
- 28. mise en œuvre IPropertyAccessor NHibernate
- 29. modules Ocaml mise en œuvre
- 30. mise en œuvre itérateurs vide
travail env? unix? –
env est ubuntu 10.10, python 2.6 – RyanBrady