Skip to content

Commit 679f386

Browse files
committed
-) Don't use web session for authentication requests ensuring new connection is made each time. Hopefully reduce connection reset by peer messages
1 parent 3e31d55 commit 679f386

File tree

2 files changed

+35
-13
lines changed

2 files changed

+35
-13
lines changed

pymyq/api.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ async def request(
171171
data=data,
172172
json=json,
173173
allow_redirects=allow_redirects,
174+
use_websession=True,
174175
)
175176
except ClientResponseError as err:
176177
message = (

pymyq/request.py

Lines changed: 34 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import logging
44
from json import JSONDecodeError
55

6-
from aiohttp import ClientSession, ClientResponse
6+
from aiohttp import ClientSession, ClientResponse, request as aiohttp_request
77
from aiohttp.client_exceptions import ClientError, ClientResponseError
88

99
from .errors import RequestError
@@ -31,6 +31,7 @@ async def _send_request(
3131
data: dict = None,
3232
json: dict = None,
3333
allow_redirects: bool = False,
34+
use_websession: bool = True,
3435
) -> ClientResponse:
3536

3637
attempt = 0
@@ -46,18 +47,32 @@ async def _send_request(
4647

4748
attempt += 1
4849
try:
49-
_LOGGER.debug(f"Sending myq api request {url} and headers {headers}")
50-
resp = await self._websession.request(
51-
method,
52-
url,
53-
headers=headers,
54-
params=params,
55-
data=data,
56-
json=json,
57-
skip_auto_headers={"USER-AGENT"},
58-
allow_redirects=allow_redirects,
59-
raise_for_status=True,
60-
)
50+
if use_websession:
51+
_LOGGER.debug(f"Sending myq api request {url} and headers {headers} with connection pooling")
52+
resp = await self._websession.request(
53+
method,
54+
url,
55+
headers=headers,
56+
params=params,
57+
data=data,
58+
json=json,
59+
skip_auto_headers={"USER-AGENT"},
60+
allow_redirects=allow_redirects,
61+
raise_for_status=True,
62+
)
63+
else:
64+
_LOGGER.debug(f"Sending myq api request {url} and headers {headers}")
65+
resp = await aiohttp_request(
66+
method,
67+
url,
68+
headers=headers,
69+
params=params,
70+
data=data,
71+
json=json,
72+
allow_redirects=allow_redirects,
73+
raise_for_status=True,
74+
)
75+
6176
_LOGGER.debug("Response:")
6277
_LOGGER.debug(f" Response Code: {resp.status}")
6378
_LOGGER.debug(f" Headers: {resp.raw_headers}")
@@ -91,6 +106,7 @@ async def request_json(
91106
data: dict = None,
92107
json: dict = None,
93108
allow_redirects: bool = False,
109+
use_websession: bool = True,
94110
) -> (ClientResponse, dict):
95111

96112
resp = await self._send_request(
@@ -101,6 +117,7 @@ async def request_json(
101117
data=data,
102118
json=json,
103119
allow_redirects=allow_redirects,
120+
use_websession=use_websession,
104121
)
105122

106123
try:
@@ -124,6 +141,7 @@ async def request_text(
124141
data: dict = None,
125142
json: dict = None,
126143
allow_redirects: bool = False,
144+
use_websession: bool = True,
127145
) -> (ClientResponse, str):
128146

129147
resp = await self._send_request(
@@ -134,6 +152,7 @@ async def request_text(
134152
data=data,
135153
json=json,
136154
allow_redirects=allow_redirects,
155+
use_websession=use_websession,
137156
)
138157

139158
try:
@@ -157,6 +176,7 @@ async def request_response(
157176
data: dict = None,
158177
json: dict = None,
159178
allow_redirects: bool = False,
179+
use_websession: bool = True,
160180
) -> (ClientResponse, None):
161181

162182
return (
@@ -168,6 +188,7 @@ async def request_response(
168188
data=data,
169189
json=json,
170190
allow_redirects=allow_redirects,
191+
use_websession=use_websession,
171192
),
172193
None,
173194
)

0 commit comments

Comments
 (0)