From 4ba082304ea386da9744eeb581d47f6000017669 Mon Sep 17 00:00:00 2001 From: Leszek Hanusz Date: Sun, 14 Jul 2024 18:30:01 +0200 Subject: [PATCH 1/2] Modify test to show that the close is not done before exiting the context manager --- tests/test_websocket_query.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/test_websocket_query.py b/tests/test_websocket_query.py index d2270e7d..9e6fd4ab 100644 --- a/tests/test_websocket_query.py +++ b/tests/test_websocket_query.py @@ -441,7 +441,6 @@ async def test_websocket_connect_failed_with_authentication_in_connection_init( await session.execute(query1) - await asyncio.sleep(1) assert transport.websocket is None From 9867f2b7c79b3f095d08ce30711fb068c53b84e6 Mon Sep 17 00:00:00 2001 From: Leszek Hanusz Date: Sun, 14 Jul 2024 18:33:48 +0200 Subject: [PATCH 2/2] Close transport when exception appears during connect --- gql/client.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gql/client.py b/gql/client.py index 0d9e36c7..a9a2c7e2 100644 --- a/gql/client.py +++ b/gql/client.py @@ -786,7 +786,11 @@ async def connect_async(self, reconnecting=False, **kwargs): self.session = ReconnectingAsyncClientSession(client=self, **kwargs) await self.session.start_connecting_task() else: - await self.transport.connect() + try: + await self.transport.connect() + except Exception as e: + await self.transport.close() + raise e self.session = AsyncClientSession(client=self) # Get schema from transport if needed