3
3
import logging
4
4
from json import JSONDecodeError
5
5
6
- from aiohttp import ClientSession , ClientResponse
6
+ from aiohttp import ClientSession , ClientResponse , request as aiohttp_request
7
7
from aiohttp .client_exceptions import ClientError , ClientResponseError
8
8
9
9
from .errors import RequestError
@@ -31,6 +31,7 @@ async def _send_request(
31
31
data : dict = None ,
32
32
json : dict = None ,
33
33
allow_redirects : bool = False ,
34
+ use_websession : bool = True ,
34
35
) -> ClientResponse :
35
36
36
37
attempt = 0
@@ -46,18 +47,32 @@ async def _send_request(
46
47
47
48
attempt += 1
48
49
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
+
61
76
_LOGGER .debug ("Response:" )
62
77
_LOGGER .debug (f" Response Code: { resp .status } " )
63
78
_LOGGER .debug (f" Headers: { resp .raw_headers } " )
@@ -91,6 +106,7 @@ async def request_json(
91
106
data : dict = None ,
92
107
json : dict = None ,
93
108
allow_redirects : bool = False ,
109
+ use_websession : bool = True ,
94
110
) -> (ClientResponse , dict ):
95
111
96
112
resp = await self ._send_request (
@@ -101,6 +117,7 @@ async def request_json(
101
117
data = data ,
102
118
json = json ,
103
119
allow_redirects = allow_redirects ,
120
+ use_websession = use_websession ,
104
121
)
105
122
106
123
try :
@@ -124,6 +141,7 @@ async def request_text(
124
141
data : dict = None ,
125
142
json : dict = None ,
126
143
allow_redirects : bool = False ,
144
+ use_websession : bool = True ,
127
145
) -> (ClientResponse , str ):
128
146
129
147
resp = await self ._send_request (
@@ -134,6 +152,7 @@ async def request_text(
134
152
data = data ,
135
153
json = json ,
136
154
allow_redirects = allow_redirects ,
155
+ use_websession = use_websession ,
137
156
)
138
157
139
158
try :
@@ -157,6 +176,7 @@ async def request_response(
157
176
data : dict = None ,
158
177
json : dict = None ,
159
178
allow_redirects : bool = False ,
179
+ use_websession : bool = True ,
160
180
) -> (ClientResponse , None ):
161
181
162
182
return (
@@ -168,6 +188,7 @@ async def request_response(
168
188
data = data ,
169
189
json = json ,
170
190
allow_redirects = allow_redirects ,
191
+ use_websession = use_websession ,
171
192
),
172
193
None ,
173
194
)
0 commit comments