summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlysses Souza <ulysses.souza@docker.com>2019-03-12 15:36:58 +0100
committerUlysses Souza <ulysses.souza@docker.com>2019-03-15 11:23:00 +0100
commite48a1a94e6f76f9fd1b2882522eb714b1f70d5d6 (patch)
tree1191297172bc4fbd72a0899f2fce7a65b640ca4b
parent24ace2dac8c82d342449c5d2843139559c273fa4 (diff)
downloaddocker-py-e48a1a94e6f76f9fd1b2882522eb714b1f70d5d6.tar.gz
Sets a different default number of pools to SSH
This is because default the number of connections in OpenSSH is 10 Signed-off-by: Ulysses Souza <ulysses.souza@docker.com>
-rw-r--r--docker/api/client.py10
-rw-r--r--docker/constants.py6
2 files changed, 13 insertions, 3 deletions
diff --git a/docker/api/client.py b/docker/api/client.py
index 9b70554..7609651 100644
--- a/docker/api/client.py
+++ b/docker/api/client.py
@@ -22,8 +22,8 @@ from .volume import VolumeApiMixin
from .. import auth
from ..constants import (
DEFAULT_TIMEOUT_SECONDS, DEFAULT_USER_AGENT, IS_WINDOWS_PLATFORM,
- DEFAULT_DOCKER_API_VERSION, STREAM_HEADER_SIZE_BYTES, DEFAULT_NUM_POOLS,
- MINIMUM_DOCKER_API_VERSION
+ DEFAULT_DOCKER_API_VERSION, MINIMUM_DOCKER_API_VERSION,
+ STREAM_HEADER_SIZE_BYTES, DEFAULT_NUM_POOLS_SSH, DEFAULT_NUM_POOLS
)
from ..errors import (
DockerException, InvalidVersion, TLSParameterError,
@@ -101,7 +101,7 @@ class APIClient(
def __init__(self, base_url=None, version=None,
timeout=DEFAULT_TIMEOUT_SECONDS, tls=False,
- user_agent=DEFAULT_USER_AGENT, num_pools=DEFAULT_NUM_POOLS,
+ user_agent=DEFAULT_USER_AGENT, num_pools=None,
credstore_env=None):
super(APIClient, self).__init__()
@@ -132,6 +132,10 @@ class APIClient(
base_url = utils.parse_host(
base_url, IS_WINDOWS_PLATFORM, tls=bool(tls)
)
+ # SSH has a different default for num_pools to all other adapters
+ num_pools = num_pools or DEFAULT_NUM_POOLS_SSH if \
+ base_url.startswith('ssh://') else DEFAULT_NUM_POOLS
+
if base_url.startswith('http+unix://'):
self._custom_adapter = UnixAdapter(
base_url, timeout, pool_connections=num_pools
diff --git a/docker/constants.py b/docker/constants.py
index 1ab11ec..dcba0de 100644
--- a/docker/constants.py
+++ b/docker/constants.py
@@ -18,4 +18,10 @@ WINDOWS_LONGPATH_PREFIX = '\\\\?\\'
DEFAULT_USER_AGENT = "docker-sdk-python/{0}".format(version)
DEFAULT_NUM_POOLS = 25
+
+# The OpenSSH server default value for MaxSessions is 10 which means we can
+# use up to 9, leaving the final session for the underlying SSH connection.
+# For more details see: https://github.com/docker/docker-py/issues/2246
+DEFAULT_NUM_POOLS_SSH = 9
+
DEFAULT_DATA_CHUNK_SIZE = 1024 * 2048