Skip to content

Commit 9a1d440

Browse files
amotlmfussenegger
authored andcommitted
Propagate parameter "pool_size" to urllib3 as "maxsize" parameter
This makes the connection pool size configurable, which is important in multi-threaded situations.
1 parent f773d76 commit 9a1d440

File tree

3 files changed

+32
-9
lines changed

3 files changed

+32
-9
lines changed

CHANGES.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ Changes for crate
55
Unreleased
66
==========
77

8+
- Propagate connect parameter ``pool_size`` to urllib3 as ``maxsize`` parameter
9+
in order to make the connection pool size configurable.
10+
811
2020/08/05 0.25.0
912
=================
1013

src/crate/client/connection.py

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,20 @@
2828

2929
class Connection(object):
3030

31-
def __init__(self, servers=None, timeout=None, backoff_factor=0, client=None,
32-
verify_ssl_cert=False, ca_cert=None, error_trace=False,
33-
cert_file=None, key_file=None, username=None, password=None,
34-
schema=None):
31+
def __init__(self,
32+
servers=None,
33+
timeout=None,
34+
backoff_factor=0,
35+
client=None,
36+
verify_ssl_cert=False,
37+
ca_cert=None,
38+
error_trace=False,
39+
cert_file=None,
40+
key_file=None,
41+
username=None,
42+
password=None,
43+
schema=None,
44+
pool_size=None):
3545
if client:
3646
self.client = client
3747
else:
@@ -45,7 +55,8 @@ def __init__(self, servers=None, timeout=None, backoff_factor=0, client=None,
4555
key_file=key_file,
4656
username=username,
4757
password=password,
48-
schema=schema)
58+
schema=schema,
59+
pool_size=pool_size)
4960
self.lowest_server_version = self._lowest_server_version()
5061
self._closed = False
5162

@@ -113,7 +124,8 @@ def connect(servers=None,
113124
key_file=None,
114125
username=None,
115126
password=None,
116-
schema=None):
127+
schema=None,
128+
pool_size=None):
117129
""" Create a :class:Connection object
118130
119131
:param servers:
@@ -122,6 +134,9 @@ def connect(servers=None,
122134
:param timeout:
123135
(optional)
124136
define the retry timeout for unreachable servers in seconds
137+
:param backoff_factor:
138+
(optional)
139+
define the retry interval for unreachable servers in seconds
125140
:param client:
126141
(optional - for testing)
127142
client used to communicate with crate.
@@ -142,15 +157,17 @@ def connect(servers=None,
142157
the username in the database.
143158
:param password:
144159
the password of the user in the database.
145-
:param backoff_factor:
160+
:param pool_size:
146161
(optional)
147-
define the retry interval for unreachable servers in seconds
162+
Number of connections to save that can be reused.
163+
More than 1 is useful in multithreaded situations.
148164
>>> connect(['host1:4200', 'host2:4200'])
149165
<Connection <Client ['http://host1:4200', 'http://host2:4200']>>
150166
"""
151167
return Connection(servers=servers,
152168
timeout=timeout,
153169
backoff_factor=backoff_factor,
170+
pool_size=pool_size,
154171
client=client,
155172
verify_ssl_cert=verify_ssl_cert,
156173
ca_cert=ca_cert,

src/crate/client/http.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,8 @@ def __init__(self,
283283
key_file=None,
284284
username=None,
285285
password=None,
286-
schema=None):
286+
schema=None,
287+
pool_size=None):
287288
if not servers:
288289
servers = [self.default_server]
289290
else:
@@ -292,6 +293,8 @@ def __init__(self,
292293
self._inactive_servers = []
293294
pool_kw = _pool_kw_args(verify_ssl_cert, ca_cert, cert_file, key_file)
294295
pool_kw['timeout'] = timeout
296+
if pool_size is not None:
297+
pool_kw['maxsize'] = pool_size
295298
self.backoff_factor = backoff_factor
296299
self.server_pool = {}
297300
self._update_server_pool(servers, **pool_kw)

0 commit comments

Comments
 (0)