Skip to content

Commit fc923c5

Browse files
authored
lazy aiohttp client creation (#115)
1 parent 9955bc6 commit fc923c5

File tree

3 files changed

+7
-4
lines changed

3 files changed

+7
-4
lines changed

etcd3/aio_client.py

+6-3
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from .errors import Etcd3Exception
1717
from .errors import Etcd3StreamError
1818
from .errors import get_client_error
19-
from .utils import iter_json_string, Etcd3Warning
19+
from .utils import iter_json_string, Etcd3Warning, cached_property
2020

2121

2222
class ModelizedResponse(object):
@@ -174,8 +174,11 @@ def __init__(self, host='127.0.0.1', port=2379, protocol='http',
174174
ssl_context.verify_mode = cert_reqs
175175
ssl_context.load_verify_locations(cafile=cafile)
176176
ssl_context.load_cert_chain(*self.cert)
177-
connector = aiohttp.TCPConnector(limit=pool_size, ssl=self.ssl_context)
178-
self.session = aiohttp.ClientSession(connector=connector)
177+
178+
@cached_property
179+
def session(self):
180+
connector = aiohttp.TCPConnector(limit=self.pool_size, ssl=self.ssl_context)
181+
return aiohttp.ClientSession(connector=connector)
179182

180183
async def close(self):
181184
"""

etcd3/baseclient.py

+1
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ def __init__(self, host='127.0.0.1', port=2379, protocol='http',
6666
if not user_agent:
6767
self.user_agent = 'etcd3-py/' + __version__
6868
self.timeout = timeout
69+
self.pool_size = pool_size
6970
self.headers = headers or {}
7071
self.username = username
7172
self.password = password

setup.cfg

-1
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,3 @@ test = pytest
2222

2323
[metadata]
2424
license_file = LICENSE
25-

0 commit comments

Comments
 (0)