Skip to content

Commit 1c2eab1

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

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

src/socketio/admin.py

Lines changed: 6 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,9 @@ def _trigger_event(self, event, namespace, *args):
206208
serialized_socket,
207209
datetime.fromtimestamp(t, timezone.utc).isoformat(),
208210
), namespace=self.admin_namespace)
211+
if not self.sio.eio._get_socket(eio_sid).upgraded:
212+
self.sio.start_background_task(
213+
self._check_for_upgrade, eio_sid, sid, namespace)
209214
elif event == 'disconnect':
210215
del self.sio.manager._timestamps[sid]
211216
reason = args[1]
@@ -283,6 +288,7 @@ def _emit(self, event, data, namespace, room=None, skip_sid=None,
283288
def _handle_eio_connect(self, eio_sid, environ):
284289
if self.stop_stats_event is None:
285290
self.stop_stats_event = self.sio.eio.create_event()
291+
if self.stats_task is None:
286292
self.stats_task = self.sio.start_background_task(
287293
self._emit_server_stats)
288294

src/socketio/async_admin.py

Lines changed: 6 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,9 @@ async def _trigger_event(self, event, namespace, *args):
195194
serialized_socket,
196195
datetime.fromtimestamp(t, timezone.utc).isoformat(),
197196
), namespace=self.admin_namespace)
197+
if not self.sio.eio._get_socket(eio_sid).upgraded:
198+
self.sio.start_background_task(
199+
self._check_for_upgrade, eio_sid, sid, namespace)
198200
elif event == 'disconnect':
199201
del self.sio.manager._timestamps[sid]
200202
reason = args[1]
@@ -273,6 +275,7 @@ async def _emit(self, event, data, namespace, room=None, skip_sid=None,
273275
async def _handle_eio_connect(self, eio_sid, environ):
274276
if self.stop_stats_event is None:
275277
self.stop_stats_event = self.sio.eio.create_event()
278+
if self.stats_task is None:
276279
self.stats_task = self.sio.start_background_task(
277280
self._emit_server_stats)
278281

0 commit comments

Comments
 (0)