Skip to content

Commit 6a85e71

Browse files
Admin UI fixes: remove duplicate tasks, report transport upgrades
1 parent 8469b69 commit 6a85e71

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

src/socketio/admin.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,8 @@ def shutdown(self):
194194
if self.stats_task: # pragma: no branch
195195
self.stop_stats_event.set()
196196
self.stats_task.join()
197+
self.stop_stats_event.clear()
198+
self.stats_task = None
197199

198200
def _trigger_event(self, event, namespace, *args):
199201
t = time.time()
@@ -206,6 +208,8 @@ def _trigger_event(self, event, namespace, *args):
206208
serialized_socket,
207209
datetime.fromtimestamp(t, timezone.utc).isoformat(),
208210
), namespace=self.admin_namespace)
211+
self.sio.start_background_task(self._check_for_upgrade, eio_sid,
212+
sid, namespace)
209213
elif event == 'disconnect':
210214
del self.sio.manager._timestamps[sid]
211215
reason = args[1]
@@ -283,6 +287,7 @@ def _emit(self, event, data, namespace, room=None, skip_sid=None,
283287
def _handle_eio_connect(self, eio_sid, environ):
284288
if self.stop_stats_event is None:
285289
self.stop_stats_event = self.sio.eio.create_event()
290+
if self.stats_task is None:
286291
self.stats_task = self.sio.start_background_task(
287292
self._emit_server_stats)
288293

src/socketio/async_admin.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,9 +157,6 @@ async def config(sid):
157157
namespace=self.admin_namespace)
158158

159159
self.sio.start_background_task(config, sid)
160-
self.stop_stats_event = self.sio.eio.create_event()
161-
self.stats_task = self.sio.start_background_task(
162-
self._emit_server_stats)
163160

164161
async def admin_emit(self, _, namespace, room_filter, event, *data):
165162
await self.sio.emit(event, data, to=room_filter, namespace=namespace)
@@ -183,6 +180,8 @@ async def shutdown(self):
183180
if self.stats_task: # pragma: no branch
184181
self.stop_stats_event.set()
185182
await asyncio.gather(self.stats_task)
183+
self.stats_task = None
184+
self.stop_stats_event.clear()
186185

187186
async def _trigger_event(self, event, namespace, *args):
188187
t = time.time()
@@ -195,6 +194,8 @@ async def _trigger_event(self, event, namespace, *args):
195194
serialized_socket,
196195
datetime.fromtimestamp(t, timezone.utc).isoformat(),
197196
), namespace=self.admin_namespace)
197+
self.sio.start_background_task(self._check_for_upgrade, eio_sid,
198+
sid, namespace)
198199
elif event == 'disconnect':
199200
del self.sio.manager._timestamps[sid]
200201
reason = args[1]
@@ -273,6 +274,7 @@ async def _emit(self, event, data, namespace, room=None, skip_sid=None,
273274
async def _handle_eio_connect(self, eio_sid, environ):
274275
if self.stop_stats_event is None:
275276
self.stop_stats_event = self.sio.eio.create_event()
277+
if self.stats_task is None:
276278
self.stats_task = self.sio.start_background_task(
277279
self._emit_server_stats)
278280

0 commit comments

Comments
 (0)