From bb1c528ab3c67ac6ceb3f8a65a7cc0f919cf83fe Mon Sep 17 00:00:00 2001 From: Mariano Scazzariello Date: Tue, 17 Nov 2020 15:42:36 +0100 Subject: Add max_pool_size parameter (#2699) * Add max_pool_size parameter Signed-off-by: Mariano Scazzariello * Add client version to tests Signed-off-by: Mariano Scazzariello * Fix parameter position Signed-off-by: Mariano Scazzariello --- docker/transport/npipeconn.py | 10 +++++++--- docker/transport/sshconn.py | 5 ++++- docker/transport/unixconn.py | 10 +++++++--- 3 files changed, 18 insertions(+), 7 deletions(-) (limited to 'docker/transport') diff --git a/docker/transport/npipeconn.py b/docker/transport/npipeconn.py index aa05538..70d8519 100644 --- a/docker/transport/npipeconn.py +++ b/docker/transport/npipeconn.py @@ -73,12 +73,15 @@ class NpipeHTTPAdapter(BaseHTTPAdapter): __attrs__ = requests.adapters.HTTPAdapter.__attrs__ + ['npipe_path', 'pools', - 'timeout'] + 'timeout', + 'max_pool_size'] def __init__(self, base_url, timeout=60, - pool_connections=constants.DEFAULT_NUM_POOLS): + pool_connections=constants.DEFAULT_NUM_POOLS, + max_pool_size=constants.DEFAULT_MAX_POOL_SIZE): self.npipe_path = base_url.replace('npipe://', '') self.timeout = timeout + self.max_pool_size = max_pool_size self.pools = RecentlyUsedContainer( pool_connections, dispose_func=lambda p: p.close() ) @@ -91,7 +94,8 @@ class NpipeHTTPAdapter(BaseHTTPAdapter): return pool pool = NpipeHTTPConnectionPool( - self.npipe_path, self.timeout + self.npipe_path, self.timeout, + maxsize=self.max_pool_size ) self.pools[url] = pool diff --git a/docker/transport/sshconn.py b/docker/transport/sshconn.py index 42d1ef9..cdeeae4 100644 --- a/docker/transport/sshconn.py +++ b/docker/transport/sshconn.py @@ -184,11 +184,12 @@ class SSHConnectionPool(urllib3.connectionpool.HTTPConnectionPool): class SSHHTTPAdapter(BaseHTTPAdapter): __attrs__ = requests.adapters.HTTPAdapter.__attrs__ + [ - 'pools', 'timeout', 'ssh_client', 'ssh_params' + 'pools', 'timeout', 'ssh_client', 'ssh_params', 'max_pool_size' ] def __init__(self, base_url, timeout=60, pool_connections=constants.DEFAULT_NUM_POOLS, + max_pool_size=constants.DEFAULT_MAX_POOL_SIZE, shell_out=True): self.ssh_client = None if not shell_out: @@ -197,6 +198,7 @@ class SSHHTTPAdapter(BaseHTTPAdapter): base_url = base_url.lstrip('ssh://') self.host = base_url self.timeout = timeout + self.max_pool_size = max_pool_size self.pools = RecentlyUsedContainer( pool_connections, dispose_func=lambda p: p.close() ) @@ -219,6 +221,7 @@ class SSHHTTPAdapter(BaseHTTPAdapter): pool = SSHConnectionPool( ssh_client=self.ssh_client, timeout=self.timeout, + maxsize=self.max_pool_size, host=self.host ) self.pools[url] = pool diff --git a/docker/transport/unixconn.py b/docker/transport/unixconn.py index b619103..3e040c5 100644 --- a/docker/transport/unixconn.py +++ b/docker/transport/unixconn.py @@ -74,15 +74,18 @@ class UnixHTTPAdapter(BaseHTTPAdapter): __attrs__ = requests.adapters.HTTPAdapter.__attrs__ + ['pools', 'socket_path', - 'timeout'] + 'timeout', + 'max_pool_size'] def __init__(self, socket_url, timeout=60, - pool_connections=constants.DEFAULT_NUM_POOLS): + pool_connections=constants.DEFAULT_NUM_POOLS, + max_pool_size=constants.DEFAULT_MAX_POOL_SIZE): socket_path = socket_url.replace('http+unix://', '') if not socket_path.startswith('/'): socket_path = '/' + socket_path self.socket_path = socket_path self.timeout = timeout + self.max_pool_size = max_pool_size self.pools = RecentlyUsedContainer( pool_connections, dispose_func=lambda p: p.close() ) @@ -95,7 +98,8 @@ class UnixHTTPAdapter(BaseHTTPAdapter): return pool pool = UnixHTTPConnectionPool( - url, self.socket_path, self.timeout + url, self.socket_path, self.timeout, + maxsize=self.max_pool_size ) self.pools[url] = pool -- cgit v1.2.1