@@ -64,6 +64,8 @@ def __init__(
6464 self .resourceset_append = resourceset_append
6565
6666 def __getattr__ (self , name ):
67+ if name in ('session' , 'response' ):
68+ return self .__getattribute__ (name )
6769 if '_' in name :
6870 name = name .replace ('_' , '-' )
6971 return self .collection (name )
@@ -195,18 +197,19 @@ class ConnectClient(_ConnectClientBase, SyncClientMixin):
195197 def __init__ (self , * args , ** kwargs ):
196198 super ().__init__ (* args , ** kwargs )
197199 self ._thread_locals = threading .local ()
198- self ._thread_locals .response = None
199- self ._thread_locals .session = requests .Session ()
200- self ._thread_locals .session .mount (
201- self .endpoint ,
202- _SYNC_TRANSPORTS .setdefault (
203- self .endpoint ,
204- HTTPAdapter (),
205- ),
206- )
207200
208201 @property
209202 def session (self ):
203+ if not hasattr (self ._thread_locals , 'session' ):
204+ self ._thread_locals .session = requests .Session ()
205+ self ._thread_locals .session .mount (
206+ self .endpoint ,
207+ _SYNC_TRANSPORTS .setdefault (
208+ self .endpoint ,
209+ HTTPAdapter (),
210+ ),
211+ )
212+
210213 return self ._thread_locals .session
211214
212215 @property
@@ -216,6 +219,8 @@ def response(self) -> requests.Response:
216219 [`requests`](https://requests.readthedocs.io/en/latest/api/#requests.Response)
217220 response.
218221 """
222+ if not hasattr (self ._thread_locals , 'response' ):
223+ self ._thread_locals .response = None
219224 return self ._thread_locals .response
220225
221226 @response .setter
@@ -263,19 +268,20 @@ class AsyncConnectClient(_ConnectClientBase, AsyncClientMixin):
263268 def __init__ (self , * args , ** kwargs ):
264269 super ().__init__ (* args , ** kwargs )
265270 self ._response = contextvars .ContextVar ('response' , default = None )
266- self ._session = contextvars .ContextVar (
267- 'session' ,
268- default = httpx .AsyncClient (
271+ self ._session = contextvars .ContextVar ('session' , default = None )
272+
273+ @property
274+ def session (self ):
275+ value = self ._session .get ()
276+ if not value :
277+ value = httpx .AsyncClient (
269278 transport = _ASYNC_TRANSPORTS .setdefault (
270279 self .endpoint ,
271280 httpx .AsyncHTTPTransport (verify = _SSL_CONTEXT ),
272281 ),
273- ),
274- )
275-
276- @property
277- def session (self ):
278- return self ._session .get ()
282+ )
283+ self ._session .set (value )
284+ return value
279285
280286 @property
281287 def response (self ):
0 commit comments