Watchdog: systemd sd_notify + async heartbeat alle 50s

This commit is contained in:
root 2026-03-16 14:07:04 +07:00
parent fdca2072a3
commit 860f763695

View file

@ -7,9 +7,31 @@ import os
import fcntl
import atexit
import signal
import socket as _socket
sys.path.insert(0, os.path.dirname(__file__))
def _sd_notify(msg: str):
"""Systemd Notify ohne externe Abhaengigkeit."""
addr = os.environ.get("NOTIFY_SOCKET")
if not addr:
return
if addr[0] == "@":
addr = "\0" + addr[1:]
sock = _socket.socket(_socket.AF_UNIX, _socket.SOCK_DGRAM)
try:
sock.sendto(msg.encode(), addr)
finally:
sock.close()
async def _watchdog_loop():
"""Sendet alle 50s WATCHDOG=1 an systemd."""
while True:
_sd_notify("WATCHDOG=1")
await asyncio.sleep(50)
PIDFILE = "/tmp/hausmeister-bot.pid"
_lock_fp = None
@ -735,6 +757,9 @@ def main():
async def post_init(application):
await application.bot.set_my_commands(BOT_COMMANDS)
log.info("Kommandomenü registriert")
asyncio.create_task(_watchdog_loop())
_sd_notify("READY=1")
log.info("Systemd Watchdog aktiv (50s Intervall)")
app.post_init = post_init
log.info("Bot läuft — polling gestartet")