You've already forked RadioPlayer
mirror of
https://github.com/radio95-rnt/RadioPlayer.git
synced 2026-02-26 21:53:54 +01:00
shutdown
This commit is contained in:
@@ -138,7 +138,7 @@ def websocket_server_process(shared_data: dict, imc_q: multiprocessing.Queue, ws
|
|||||||
Headers([("Connection", "Upgrade"), ("Upgrade", "websocket")]),
|
Headers([("Connection", "Upgrade"), ("Upgrade", "websocket")]),
|
||||||
b"WebSocket upgrade required\n"
|
b"WebSocket upgrade required\n"
|
||||||
)
|
)
|
||||||
# start server
|
|
||||||
watcher = asyncio.create_task(shutdown_watcher())
|
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)
|
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))
|
broadcaster = asyncio.create_task(broadcast_worker(ws_q, clients))
|
||||||
@@ -148,17 +148,11 @@ def websocket_server_process(shared_data: dict, imc_q: multiprocessing.Queue, ws
|
|||||||
await asyncio.gather(*close_tasks, return_exceptions=True)
|
await asyncio.gather(*close_tasks, return_exceptions=True)
|
||||||
clients.clear()
|
clients.clear()
|
||||||
server.close()
|
server.close()
|
||||||
ws_q.put(None)
|
|
||||||
await server.wait_closed()
|
await server.wait_closed()
|
||||||
watcher.cancel()
|
watcher.cancel()
|
||||||
broadcaster.cancel()
|
broadcaster.cancel()
|
||||||
try:
|
try: await asyncio.wait_for(asyncio.gather(watcher, broadcaster, return_exceptions=True), timeout=2.0)
|
||||||
await asyncio.wait_for(
|
except asyncio.TimeoutError: pass
|
||||||
asyncio.gather(watcher, broadcaster, return_exceptions=True),
|
|
||||||
timeout=2.0
|
|
||||||
)
|
|
||||||
except asyncio.TimeoutError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
loop = asyncio.new_event_loop()
|
loop = asyncio.new_event_loop()
|
||||||
asyncio.set_event_loop(loop)
|
asyncio.set_event_loop(loop)
|
||||||
@@ -238,11 +232,15 @@ class Module(PlayerModule):
|
|||||||
def shutdown(self):
|
def shutdown(self):
|
||||||
self.ipc_thread_running = False
|
self.ipc_thread_running = False
|
||||||
|
|
||||||
try:self.imc_q.put(None)
|
try: self.imc_q.put(None)
|
||||||
|
except: pass
|
||||||
|
|
||||||
|
self.shutdown_evt.set()
|
||||||
|
|
||||||
|
try: self.ws_q.put(None)
|
||||||
except: pass
|
except: pass
|
||||||
|
|
||||||
self.ipc_thread.join(timeout=2)
|
self.ipc_thread.join(timeout=2)
|
||||||
self.shutdown_evt.set()
|
|
||||||
self.ws_process.join(timeout=5)
|
self.ws_process.join(timeout=5)
|
||||||
|
|
||||||
if self.ws_process.is_alive():
|
if self.ws_process.is_alive():
|
||||||
|
|||||||
Reference in New Issue
Block a user