¿Cuál es la forma correcta de ejecutar un script de Python como daemon (servicio) en raspbian (o debian)?

9

Me gustaría usar mi Pi como termostato doméstico, con el bucle de control ejecutándose en un script de Python. Quiero ejecutarlo como un demonio en raspbian (debian) al inicio.

Hay un ejemplo de script bash en /etc/init.d/skeleton, pero parece poco propicio mezclar bash y python juntos. Hay módulos python y paquetes deb que pueden ayudar con el procesamiento de comandos de inicio / detención / alerta:

¿Alguien ha tenido éxito con un enfoque particular para demonizar un bucle de control de retroalimentación "en tiempo real" en el Pi?

placas
fuente

Respuestas:

6

He hecho esto en varios proyectos. https://bitbucket.org/dnetman99/raspberrypiprojects si miras el gpsdpiTracker, trackerServer.pyusa la clase daemon para demonizar el script. Luego solo uso restartdpara ver si se detiene y lo reinicia, lo que también significa que también se iniciará después del arranque. También he usado el archivo de esqueleto para iniciar, detener el demonio, pero no es necesario si usa este método.

restartd = sudo apt-get install restartd
Robert
fuente
¡Gracias! Impresionantes ejemplos. Veré si puedo reciclar parte de ese código. La clase daemon es del módulo python-daemon basado en PEP 3143 y el reinicio está aquí .
Hobs
En realidad, parece que sacaste tu propia clase de Daemon. Agradable.
Hobs
1
Excepto por la línea she-bang, la clase Demon en el bitbucket de dnetman99 es idéntica al demonio simple de Sander Marechal de 2007. Crédito donde se debe el crédito. Vía aquí
RolfBly
2

Mire la forma en que demonizamos en el cliente pybit-client.

https://github.com/nicholasdavidson/pybit

Eso fue diseñado para ejecutarse como un demonio en pequeñas cajas ARM 24/7.

Maneja el registro, el manejo de la señal, los scripts de inicio / detención, etc.

James Bennet
fuente