Skip to content

Commit 719bf1c

Browse files
authored
Revert "⬆️ Maintenance: Upgrade python-socketio + flakyness (ITISFoundation#3622)" (ITISFoundation#3630)
This reverts commit db03a28.
1 parent db03a28 commit 719bf1c

File tree

8 files changed

+137
-265
lines changed

8 files changed

+137
-265
lines changed

services/web/server/requirements/_base.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
# From 5.0.0, https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md
2323
# test_resource_manager.py::test_websocket_resource_management fails because
2424
# socket_id saved in redis does not correspond to client's sio
25-
python-socketio
25+
python-socketio~=4.6.1
2626

2727

2828

services/web/server/requirements/_base.txt

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,7 @@
55
# pip-compile --output-file=requirements/_base.txt --strip-extras requirements/_base.in
66
#
77
aio-pika==8.2.4
8-
# via
9-
# -c requirements/../../../../packages/service-library/requirements/./_base.in
10-
# -r requirements/../../../../packages/service-library/requirements/_base.in
11-
# -r requirements/../../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/_base.in
12-
# -r requirements/_base.in
8+
# via -r requirements/_base.in
139
aiocache==0.11.1
1410
# via -r requirements/../../../../packages/simcore-sdk/requirements/_base.in
1511
aiodebug==2.3.0
@@ -88,8 +84,6 @@ attrs==21.4.0
8884
# aiohttp
8985
# jsonschema
9086
# openapi-core
91-
bidict==0.22.0
92-
# via python-socketio
9387
certifi==2022.6.15
9488
# via requests
9589
cffi==1.15.0
@@ -204,7 +198,6 @@ openapi-spec-validator==0.4.0
204198
# -c requirements/../../../../packages/service-library/requirements/././constraints.txt
205199
# -c requirements/../../../../packages/service-library/requirements/./constraints.txt
206200
# -c requirements/../../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/./constraints.txt
207-
# -c requirements/../../../../packages/simcore-sdk/requirements/./constraints.txt
208201
# openapi-core
209202
openpyxl==3.0.9
210203
# via -r requirements/_base.in
@@ -269,11 +262,11 @@ pyparsing==3.0.9
269262
# via packaging
270263
pyrsistent==0.18.1
271264
# via jsonschema
272-
python-engineio==4.3.4
265+
python-engineio==3.14.2
273266
# via python-socketio
274267
python-magic==0.4.25
275268
# via -r requirements/_base.in
276-
python-socketio==5.7.2
269+
python-socketio==4.6.1
277270
# via -r requirements/_base.in
278271
pytz==2022.1
279272
# via twilio
@@ -309,6 +302,8 @@ six==1.16.0
309302
# isodate
310303
# jsonschema
311304
# openapi-core
305+
# python-engineio
306+
# python-socketio
312307
sqlalchemy==1.4.37
313308
# via
314309
# -c requirements/../../../../packages/models-library/requirements/../../../requirements/constraints.txt

services/web/server/requirements/_test.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,6 @@ ptvsd==4.3.2
155155
# via -r requirements/_test.in
156156
py==1.11.0
157157
# via
158-
# -c requirements/../../../../requirements/constraints.txt
159158
# -r requirements/_test.in
160159
# pytest-forked
161160
pylint==2.15.5
@@ -260,7 +259,7 @@ urllib3==1.26.11
260259
# requests
261260
websocket-client==1.4.1
262261
# via docker
263-
websockets==10.4
262+
websockets==10.3
264263
# via -r requirements/_test.in
265264
wrapt==1.14.1
266265
# via

services/web/server/requirements/_tools.txt

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,6 @@
44
#
55
# pip-compile --output-file=requirements/_tools.txt --strip-extras requirements/_tools.in
66
#
7-
astroid==2.12.12
8-
# via
9-
# -c requirements/_test.txt
10-
# pylint
117
black==22.10.0
128
# via -r requirements/../../../../requirements/devenv.txt
139
build==0.8.0
@@ -22,10 +18,6 @@ click==8.1.3
2218
# -c requirements/_test.txt
2319
# black
2420
# pip-tools
25-
dill==0.3.5.1
26-
# via
27-
# -c requirements/_test.txt
28-
# pylint
2921
distlib==0.3.6
3022
# via virtualenv
3123
filelock==3.8.0
@@ -38,16 +30,6 @@ isort==5.10.1
3830
# via
3931
# -c requirements/_test.txt
4032
# -r requirements/../../../../requirements/devenv.txt
41-
# pylint
42-
lazy-object-proxy==1.7.1
43-
# via
44-
# -c requirements/_base.txt
45-
# -c requirements/_test.txt
46-
# astroid
47-
mccabe==0.7.0
48-
# via
49-
# -c requirements/_test.txt
50-
# pylint
5133
mypy-extensions==0.4.3
5234
# via black
5335
nodeenv==1.7.0
@@ -69,14 +51,9 @@ platformdirs==2.5.2
6951
# via
7052
# -c requirements/_test.txt
7153
# black
72-
# pylint
7354
# virtualenv
7455
pre-commit==2.20.0
7556
# via -r requirements/../../../../requirements/devenv.txt
76-
pylint==2.15.5
77-
# via
78-
# -c requirements/_test.txt
79-
# -r requirements/../../../../requirements/devenv.txt
8057
pyparsing==3.0.9
8158
# via
8259
# -c requirements/_base.txt
@@ -96,27 +73,15 @@ tomli==2.0.1
9673
# black
9774
# build
9875
# pep517
99-
# pylint
100-
tomlkit==0.11.5
101-
# via
102-
# -c requirements/_test.txt
103-
# pylint
10476
typing-extensions==4.3.0
10577
# via
10678
# -c requirements/_base.txt
10779
# -c requirements/_test.txt
108-
# astroid
10980
# black
110-
# pylint
11181
virtualenv==20.16.5
11282
# via pre-commit
11383
wheel==0.37.1
11484
# via pip-tools
115-
wrapt==1.14.1
116-
# via
117-
# -c requirements/_base.txt
118-
# -c requirements/_test.txt
119-
# astroid
12085

12186
# The following packages are considered to be unsafe in a requirements file:
12287
# pip
Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
import asyncio
21
import logging
3-
from typing import AsyncIterator
42

53
from aiohttp import web
64
from socketio import AsyncServer
@@ -15,40 +13,14 @@ def get_socket_server(app: web.Application) -> AsyncServer:
1513
return app[APP_CLIENT_SOCKET_SERVER_KEY]
1614

1715

18-
async def _socketio_server_cleanup_ctx(_app: web.Application) -> AsyncIterator[None]:
19-
yield
20-
# NOTE: this is ugly. It seems though that python-enginio does not
21-
# cleanup its background tasks properly.
22-
# https://github.com/miguelgrinberg/python-socketio/discussions/1092
23-
current_tasks = asyncio.tasks.all_tasks()
24-
cancelled_tasks = []
25-
for task in current_tasks:
26-
coro = task.get_coro()
27-
if any(
28-
coro_name in coro.__qualname__ # type: ignore
29-
for coro_name in [
30-
"AsyncServer._service_task",
31-
"AsyncSocket.schedule_ping",
32-
]
33-
):
34-
task.cancel()
35-
cancelled_tasks.append(task)
36-
await asyncio.gather(*cancelled_tasks, return_exceptions=True)
37-
38-
3916
def setup_socketio_server(app: web.Application):
4017
if app.get(APP_CLIENT_SOCKET_SERVER_KEY) is None:
4118
# SEE https://github.com/miguelgrinberg/python-socketio/blob/v4.6.1/docs/server.rst#aiohttp
4219
# TODO: ujson to speed up?
4320
# TODO: client_manager= to socketio.AsyncRedisManager/AsyncAioPikaManager for horizontal scaling (shared sessions)
44-
sio = AsyncServer(
45-
async_mode="aiohttp",
46-
logger=log, # type: ignore
47-
engineio_logger=False,
48-
)
21+
sio = AsyncServer(async_mode="aiohttp", logger=log, engineio_logger=False)
4922
sio.attach(app)
5023

5124
app[APP_CLIENT_SOCKET_SERVER_KEY] = sio
52-
app.cleanup_ctx.append(_socketio_server_cleanup_ctx)
5325

5426
return get_socket_server(app)

services/web/server/tests/integration/01/test_garbage_collection.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -279,12 +279,8 @@ async def connect_to_socketio(client, user, socketio_client_factory: Callable):
279279
"user_id": str(user["id"]),
280280
"client_session_id": cur_client_session_id,
281281
}
282-
assert await socket_registry.find_keys(("socket_id", sio.get_sid())) == [
283-
resource_key
284-
]
285-
assert sio.get_sid() in await socket_registry.find_resources(
286-
resource_key, "socket_id"
287-
)
282+
assert await socket_registry.find_keys(("socket_id", sio.sid)) == [resource_key]
283+
assert sio.sid in await socket_registry.find_resources(resource_key, "socket_id")
288284
assert len(await socket_registry.find_resources(resource_key, "socket_id")) == 1
289285
sio_connection_data = sio, resource_key
290286
return sio_connection_data
@@ -293,12 +289,12 @@ async def connect_to_socketio(client, user, socketio_client_factory: Callable):
293289
async def disconnect_user_from_socketio(client, sio_connection_data):
294290
"""disconnect a previously connected socket.io connection"""
295291
sio, resource_key = sio_connection_data
296-
sid = sio.get_sid()
292+
sid = sio.sid
297293
socket_registry = get_registry(client.server.app)
298294
await sio.disconnect()
299295
assert not sio.sid
300296
await asyncio.sleep(0) # just to ensure there is a context switch
301-
assert not await socket_registry.find_keys(("socket_id", sio.get_sid()))
297+
assert not await socket_registry.find_keys(("socket_id", sio.sid))
302298
assert not sid in await socket_registry.find_resources(resource_key, "socket_id")
303299
assert not await socket_registry.find_resources(resource_key, "socket_id")
304300

0 commit comments

Comments
 (0)