Qual é a maneira correta de executar um script python como um daemon (serviço) no raspbian (ou debian)?

9

Gostaria de usar meu Pi como termostato doméstico, com o loop de controle em execução em um script python. Quero executá-lo como um daemon no raspbian (debian) na inicialização.

Há um exemplo de script bash no /etc/init.d/skeleton, mas parece não sintético misturar bash e python. Existem módulos python e pacotes deb que podem ajudar no processamento de comandos start / stop / alert:

Alguém teve sucesso com uma abordagem específica para daemonizar um loop de controle de feedback "em tempo real" no Pi?

fogão
fonte

Respostas:

6

Eu fiz isso em vários projetos. https://bitbucket.org/dnetman99/raspberrypiprojects se você olhar para o gpsdpiTracker, ele trackerServer.pyusa a classe daemon para daemonizar o script. Eu apenas uso restartdpara assistir se ele para e reinicia, o que também significa que ele será iniciado após a inicialização. Também usei o arquivo de esqueleto para iniciar, parar o daemon, mas não é necessário se você usar esse método.

restartd = sudo apt-get install restartd
Robert
fonte
Obrigado! Exemplos impressionantes. Vou ver se consigo reciclar parte desse código. A classe daemon é do módulo python-daemon baseado no PEP 3143 e restartd está aqui .
Placas
Na verdade, parece que você criou sua própria classe Daemon. Agradável.
hobs
11
Exceto pela linha she-bang, a classe Demon no bitbucket de dnetman99 é idêntica ao daemon simples de Sander Marechal de 2007. Crédito onde o crédito é devido. Por aqui
RolfBly
2

Veja como daemonizamos no cliente pybit-client.

https://github.com/nicholasdavidson/pybit

Isso foi projetado para ser executado como um daemon em pequenas caixas ARM 24/7.

Lida com registro, manipulação de sinal, scripts de início / parada, etc.

James Bennet
fonte