From ccd23ec5bb8c0a84bcea4fc0e15a272cf54e6754 Mon Sep 17 00:00:00 2001 From: Leszek Hanusz Date: Wed, 12 Mar 2025 16:52:48 +0100 Subject: [PATCH 1/2] Use new aiohttp ws timeout --- gql/transport/common/adapters/aiohttp.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/gql/transport/common/adapters/aiohttp.py b/gql/transport/common/adapters/aiohttp.py index 736f2a3e..d5b16a82 100644 --- a/gql/transport/common/adapters/aiohttp.py +++ b/gql/transport/common/adapters/aiohttp.py @@ -4,7 +4,7 @@ from typing import Any, Dict, Literal, Mapping, Optional, Union import aiohttp -from aiohttp import BasicAuth, Fingerprint, WSMsgType +from aiohttp import BasicAuth, ClientWSTimeout, Fingerprint, WSMsgType from aiohttp.typedefs import LooseHeaders, StrOrURL from multidict import CIMultiDictProxy @@ -132,6 +132,11 @@ async def connect(self) -> None: self.session = aiohttp.ClientSession(**client_session_args) + ws_timeout = ClientWSTimeout( + ws_receive=self.receive_timeout, + ws_close=self.websocket_close_timeout, + ) + connect_args: Dict[str, Any] = { "url": self.url, "headers": self.headers, @@ -142,8 +147,7 @@ async def connect(self) -> None: "proxy": self.proxy, "proxy_auth": self.proxy_auth, "proxy_headers": self.proxy_headers, - "timeout": self.websocket_close_timeout, - "receive_timeout": self.receive_timeout, + "timeout": ws_timeout, } if self.subprotocols: From 7683e9e0c135545cc94396a2be64c82bb8ad14c5 Mon Sep 17 00:00:00 2001 From: Leszek Hanusz Date: Wed, 12 Mar 2025 17:00:25 +0100 Subject: [PATCH 2/2] We need at least aiohttp v3.11.2 See https://docs.aiohttp.org/en/stable/changes.html --- setup.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/setup.py b/setup.py index f000136c..a36284b0 100644 --- a/setup.py +++ b/setup.py @@ -38,8 +38,7 @@ ] + tests_requires install_aiohttp_requires = [ - "aiohttp>=3.8.0,<4;python_version<='3.11'", - "aiohttp>=3.9.0b0,<4;python_version>'3.11'", + "aiohttp>=3.11.2,<4", ] install_requests_requires = [