Используйте поддержку systemd watchdog для перезапуска приложения

Используйте поддержку systemd watchdog для перезапуска приложения

У меня есть простой systemdсервисный модуль для перезапуска моего pythonскрипта при безусловных выходах, определенных Restart=alwaysв определении сервиса. Я просто хочу быть абсолютно уверен, что даже если скрипт зависнет каким-то образом, я смогу перезапустить его, включив WatchdogSec=переменную в файле модуля.

Моя проблема в том,официальная документация для журнала systemdне объясняет это ясно.

Цитата с той же страницы:

WatchdogSec=

Настраивает тайм-аут сторожевого таймера для службы. Сторожевой таймер активируется после завершения запуска. Служба должна sd_notify(3)регулярно вызывать "WATCHDOG=1"(т. е. "keep-alive ping").

Неясно одно: будет лиуслугасам позаботится о поддержании пингов с помощью службы наблюдения (или) приложение, которое она запускает (в моем случае - скрипт Python), должно поддерживать пинг, обновляя упомянутую переменную среды.

Мое простое определение услуги

[Unit]
Description=dev-Status: Computes RF device availability status
           
[Service]
Type=simple

EnvironmentFile=/etc/sysconfig/db_EndPoint
ExecStart=/usr/bin/python /opt/foobar/foobar.py
RestartSec=10
Restart=always
         
[Install]
WantedBy=default.target

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

WatchdogSec=30s

решение1

Чтобы «погладить» или пропинговать сторожевой таймер, вы можете использовать Pythonсистемдпакет для отправки уведомления:

from systemd.daemon import notify, Notification
notify(Notification.WATCHDOG)

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