fix: handle SIGTERM gracefully for clean container shutdown

Register signal handler on the event loop to stop the server
on SIGTERM/SIGINT instead of relying on serve_forever().
This commit is contained in:
user
2026-02-15 03:46:18 +01:00
parent 61c580a555
commit c016844a33

View File

@@ -4,6 +4,7 @@ from __future__ import annotations
import asyncio
import logging
import signal
import struct
import time
@@ -231,5 +232,12 @@ async def serve(config: Config) -> None:
else:
logger.info(" mode: direct (no chain)")
loop = asyncio.get_running_loop()
stop = loop.create_future()
for sig in (signal.SIGTERM, signal.SIGINT):
loop.add_signal_handler(sig, lambda s=sig: stop.set_result(s))
async with srv:
await srv.serve_forever()
sig = await stop
logger.info("received %s, shutting down", signal.Signals(sig).name)