Reinicie um script python a cada hora ou mais

1

Portanto, eu tenho um script python que eu inicio no terminal apenas digitando o nome do script (python SCRIPTNAME.py)

Eu só estou querendo saber se é possível fazer um script ou cron job que simplesmente pára e inicia o script python a cada hora?

    
por Mustillo 06.06.2018 / 02:19

2 respostas

2

Parece que você quer daemonizar , ou criar um serviço para o seu script Python. É assim que outros aplicativos são iniciados, na ordem correta ou nos momentos certos.

Você desejará criar um serviço systemd para seu script Python e interagir com ele por meio de systemctl .

systemctl restart mypython
systemctl enable mypython

Depois de ter seu script funcionando dessa maneira, você pode configurar cron para fazer o que for necessário, o que provavelmente será para reiniciar o serviço.

Dependendo do objetivo do seu script e da sua capacidade de determinar se ele está sendo executado corretamente, você pode aprimorar seu serviço para denunciar se ele parar de executar ou até mesmo procurar soluções como monit .

Como apontado, esta resposta fornece informações úteis, mas contém ferramentas desatualizadas, como rc.local . Em vez de usar systemd , você pode rastrear o PID do processo e, em seguida, eliminar esse processo e executar novamente seu script a cada hora.

    
por earthmeLon 06.06.2018 / 02:31
2

A melhor abordagem seria via GNU timeout como em

timeout -k 3600 python3 /path/to/script.py

onde -k significa "kill after" e tempo em segundos.

Para que o script seja executado, termine e reinicie a cada hora, você pode fazer

while timeout -k 3600 python3 /path/to/script; do
   sleep 2
done

onde sleep 2 é apenas para adicionar um pequeno atraso antes de reiniciar

Como alternativa, considere o uso do módulo Threading no Python para agendar as partes relevantes do script. Consulte o link

    
por Sergiy Kolodyazhnyy 06.06.2018 / 02:34