Browse Source

fix(async_admin): Ensure server stats task is initialized only once and reset properly upon shutdown.

pull/1545/head
coke 5 months ago
parent
commit
9946dce727
  1. 11
      src/socketio/async_admin.py

11
src/socketio/async_admin.py

@ -157,9 +157,10 @@ class InstrumentedAsyncServer:
namespace=self.admin_namespace)
self.sio.start_background_task(config, sid)
self.stop_stats_event = self.sio.eio.create_event()
self.stats_task = self.sio.start_background_task(
self._emit_server_stats)
if self.stats_task is None:
self.stop_stats_event = self.sio.eio.create_event()
self.stats_task = self.sio.start_background_task(
self._emit_server_stats)
async def admin_emit(self, _, namespace, room_filter, event, *data):
await self.sio.emit(event, data, to=room_filter, namespace=namespace)
@ -183,6 +184,8 @@ class InstrumentedAsyncServer:
if self.stats_task: # pragma: no branch
self.stop_stats_event.set()
await asyncio.gather(self.stats_task)
self.stats_task = None
self.stop_stats_event = None
async def _trigger_event(self, event, namespace, *args):
t = time.time()
@ -271,7 +274,7 @@ class InstrumentedAsyncServer:
return ret
async def _handle_eio_connect(self, eio_sid, environ):
if self.stop_stats_event is None:
if self.stats_task is None:
self.stop_stats_event = self.sio.eio.create_event()
self.stats_task = self.sio.start_background_task(
self._emit_server_stats)

Loading…
Cancel
Save