Перезапускать скрипт Python каждый час или около того

Перезапускать скрипт Python каждый час или около того

Итак, у меня есть скрипт Python, который я запускаю в терминале, просто набрав имя скрипта (python SCRIPTNAME.py)

Мне просто интересно, возможно ли создать скрипт или задание cron, которое просто останавливает, а затем запускает этот скрипт Python каждый час?

решение1

Лучшим подходом будет использование GNU, timeout как в

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

где -k означает «убить после», а время указано в секундах.

Итак, чтобы скрипт запускался, завершался и перезапускался каждый час, вы можете сделать следующее:

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

где sleep 2просто добавить небольшую задержку перед перезапуском


В качестве альтернативы можно рассмотреть возможность использования модуля Threading в Python для планирования соответствующих частей скрипта. См. https://stackoverflow.com/a/50537798/3701431

решение2

Звучит так, как будто ты хочешьдемонизировать, или создайте службу для вашего скрипта Python. Так запускаются другие приложения, в правильном порядке или в правильное время.

Вам нужно будет создать systemdслужбу для вашего скрипта Python, а затем взаимодействовать с ним через systemctl.

systemctl restart mypython
systemctl enable mypython

Как только ваш скрипт заработает таким образом, вы сможете выполнить cronнеобходимые действия, например, перезапустить службу.

В зависимости от цели вашего скрипта и вашей способности определять, работает ли он должным образом, вы можете усовершенствовать свой сервис, чтобы он сообщал, если он перестает работать, или даже рассмотреть такие решения, какmonit.


Как было отмечено,этот ответпредоставляет полезную информацию, но содержит устаревшие инструменты, такие как rc.local. Вместо использования systemd, вы можете отслеживать PID процесса, а затем убивать этот процесс и перезапускать свой скрипт каждый час.

Связанный контент