Watchdog: systemd sd_notify + async heartbeat alle 50s
This commit is contained in:
parent
fdca2072a3
commit
860f763695
1 changed files with 25 additions and 0 deletions
|
|
@ -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")
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue