Страницы

Поиск по вопросам

пятница, 10 января 2020 г.

Скрипт для перезапуска неактивных процессов python

#python


Есть скрипт, который может выполняться очень долгое время и если он станет неактивным
(упадет, зависнет) нужно его перезапустить.

Какие программы, библиотеки, скрипты, модули смогут перезапускать неактивные процессы
питона?

Запускать буду на windows и linux (Raspbian)
    


Ответы

Ответ 1



Программы подобного вида называются watchdog (сторожевая собака). Но вот только отследить, что процесс упал - просто, то отследить, что процесс завис - сложно, а иногда никак нельзя. Скрипт может молотить локальный массив и просто грузить процессор, а может зависнуть в бесконечном цикле. Как я делал подобное. Скрипт должен как то обновлять данные, что он работает. Например, писать в лог или обновлять дату файла. Вачдог запускается cron или чем то другим раз в минуту (пять минут, час) и проверяет этот файл. Если ничего не поменялось - нужно перезапускать. В другом проекте я просто встроил в скрипт маленький http сервер, который просто отдавал статистику. вачдог скрипт делал curlом запрос и смотрел на результат. Также вачдог умел отправлять письма-отчеты и слал смс, если перезапуск не удавался. Как по мне, то вачдог - это специфическая программа, которая пишется под каждую конкретную ситуацию. Но в современных системах они часто уже достаточно хорошо встроены. В линуксе тот же systemd умеет перезапускать сервисы, если они упали (но есть ли он на малинке - не знаю). Также в линуксах можно использовать runit. В виндовсе если сделать сервис, то сама винда сможет перезапускать упавший сервис. Некоторые админы пишут скрипты вачдога в таком виде: вечный цикл: проверить, запущен ли скрипт если не запущен и счетчик перезапусков не превысил лимит, перезапустить спать 5 минут Но у этого подхода есть один недостаток - этот скрипт также может упусть. Но его сильный плюс - его легко сделать кроссплатформенным.

Комментариев нет:

Отправить комментарий