Quelle est la bonne façon d'exécuter un script python en tant que démon (service) dans raspbian (ou debian)?


9

Je voudrais utiliser mon Pi comme thermostat domestique, avec la boucle de contrôle fonctionnant dans un script python. Je veux l'exécuter en tant que démon sur raspbian (debian) au démarrage.

Il y a un exemple de script bash dans /etc/init.d/skeleton, mais il semble peu pythonique de mélanger bash et python ensemble. Il existe des modules python et des packages deb qui peuvent aider au traitement des commandes start / stop / alert:

Quelqu'un a-t-il réussi une approche particulière pour démonifier une boucle de contrôle de rétroaction "en temps réel" sur le Pi?

Réponses:


6

Je l'ai fait sur plusieurs projets. https://bitbucket.org/dnetman99/raspberrypiprojects si vous regardez le gpsdpiTracker, le trackerServer.pyutilise la classe daemon pour démonifier le script. J'utilise ensuite simplement restartdpour voir s'il s'arrête et redémarre, ce qui signifie également qu'il le démarrera également après le démarrage. J'ai également utilisé le fichier squelette pour démarrer, arrêter le démon, mais ce n'est pas nécessaire si vous utilisez cette méthode.

restartd = sudo apt-get install restartd

Merci! Des exemples impressionnants. Va voir si je peux recycler une partie de ce code. La classe daemon provient du module python-daemon basé sur PEP 3143 et restartd est ici .
plaques de cuisson

Il semble que vous ayez lancé votre propre classe Daemon. Agréable.
plaques de cuisson

1
À l'exception de la ligne she-bang, la classe Demon dans le bitbucket de dnetman99 est identique au démon simple de Sander Marechal de 2007. Crédit où le crédit est dû. Via ici
RolfBly

2

Regardez la façon dont nous démonisons dans le client pybit-client.

https://github.com/nicholasdavidson/pybit

Cela a été conçu pour fonctionner en tant que démon sur de petites boîtes ARM 24/7.

Gère la journalisation, la gestion du signal, les scripts de démarrage / arrêt, etc.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.