Перезапускайте сценарий Python каждый час или так

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

Я просто задаюсь вопросом, действительно ли возможно сделать сценарий или задание крона, которое просто просто останавливается, затем запускает тот сценарий Python каждый час?

1
задан 6 June 2018 в 03:19

2 ответа

Похоже, вы хотите демонизировать или создать сервис для вашего скрипта Python. Именно так запускаются другие приложения, и в правильном порядке, или в нужное время.

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

systemctl restart mypython
systemctl enable mypython

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

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


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

2
ответ дан 3 December 2019 в 06:51

Наилучшим подходом будет использование 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

.
4
ответ дан 3 December 2019 в 06:51

Другие вопросы по тегам:

Похожие вопросы: