@@ -38,13 +38,15 @@ def __init__(
38
38
http_versions : HTTPVersionTypes = None ,
39
39
backend : ConcurrencyBackend = None ,
40
40
release_func : typing .Optional [ReleaseCallback ] = None ,
41
+ uds : typing .Optional [str ] = None ,
41
42
):
42
43
self .origin = Origin (origin ) if isinstance (origin , str ) else origin
43
44
self .ssl = SSLConfig (cert = cert , verify = verify , trust_env = trust_env )
44
45
self .timeout = TimeoutConfig (timeout )
45
46
self .http_versions = HTTPVersionConfig (http_versions )
46
47
self .backend = AsyncioBackend () if backend is None else backend
47
48
self .release_func = release_func
49
+ self .uds = uds
48
50
self .h11_connection = None # type: typing.Optional[HTTP11Connection]
49
51
self .h2_connection = None # type: typing.Optional[HTTP2Connection]
50
52
@@ -84,8 +86,21 @@ async def connect(
84
86
else :
85
87
on_release = functools .partial (self .release_func , self )
86
88
87
- logger .trace (f"start_connect host={ host !r} port={ port !r} timeout={ timeout !r} " )
88
- stream = await self .backend .open_tcp_stream (host , port , ssl_context , timeout )
89
+ if self .uds is None :
90
+ logger .trace (
91
+ f"start_connect tcp host={ host !r} port={ port !r} timeout={ timeout !r} "
92
+ )
93
+ stream = await self .backend .open_tcp_stream (
94
+ host , port , ssl_context , timeout
95
+ )
96
+ else :
97
+ logger .trace (
98
+ f"start_connect uds path={ self .uds !r} host={ host !r} timeout={ timeout !r} "
99
+ )
100
+ stream = await self .backend .open_uds_stream (
101
+ self .uds , host , ssl_context , timeout
102
+ )
103
+
89
104
http_version = stream .get_http_version ()
90
105
logger .trace (f"connected http_version={ http_version !r} " )
91
106
0 commit comments