From 2cf767a3da63fa3d062016c1f4ee47a9a784dc78 Mon Sep 17 00:00:00 2001 From: KubaPro010 Date: Sat, 13 Dec 2025 19:40:29 +0100 Subject: [PATCH] oh --- modules/web.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/modules/web.py b/modules/web.py index 66bce2e..c995bd1 100644 --- a/modules/web.py +++ b/modules/web.py @@ -107,6 +107,11 @@ def websocket_server_process(shared_data: dict, imc_q: multiprocessing.Queue, ws # create the asyncio loop and run server async def runner(): clients = set() + stop_evt = asyncio.Event() + + async def shutdown_watcher(): + await loop.run_in_executor(None, shutdown_evt.wait) + stop_evt.set() async def handler_wrapper(websocket: ServerConnection): # register client @@ -132,10 +137,12 @@ def websocket_server_process(shared_data: dict, imc_q: multiprocessing.Queue, ws b"WebSocket upgrade required\n" ) # start server + watcher = asyncio.create_task(shutdown_watcher()) server = await websockets.serve(handler_wrapper, "0.0.0.0", 3001, server_header="RadioPlayer ws plugin", process_request=process_request) broadcaster = asyncio.create_task(broadcast_worker(ws_q, clients)) - shutdown_evt.wait() + await stop_evt.wait() + watcher.cancel() server.close() ws_q.put(None) @@ -152,8 +159,6 @@ def websocket_server_process(shared_data: dict, imc_q: multiprocessing.Queue, ws except (KeyboardInterrupt, SystemExit): pass finally: loop.close() -# ---------- Module class (drop-in replacement) ---------- - class Module(PlayerModule): def __init__(self): self.manager = multiprocessing.Manager()