diff --git a/src/socketio/async_admin.py b/src/socketio/async_admin.py index b426b71..2180084 100644 --- a/src/socketio/async_admin.py +++ b/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)