From 65c0e6c65f6881c964d6e00ff86990b4d31c9c4a Mon Sep 17 00:00:00 2001 From: Adrian Garcia Badaracco <1755071+adriangb@users.noreply.github.com> Date: Sat, 15 Oct 2022 01:14:30 -0500 Subject: [PATCH] match requests pool_maxsize to num workers --- src/poetry/installation/executor.py | 11 ++++++----- src/poetry/utils/authenticator.py | 12 ++++++++++-- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/poetry/installation/executor.py b/src/poetry/installation/executor.py index 38e0065e31d..0a01fee2b98 100644 --- a/src/poetry/installation/executor.py +++ b/src/poetry/installation/executor.py @@ -60,11 +60,6 @@ def __init__( self._dry_run = False self._enabled = True self._verbose = False - self._authenticator = Authenticator( - config, self._io, disable_cache=disable_cache - ) - self._chef = Chef(config, self._env) - self._chooser = Chooser(pool, self._env, config) if parallel is None: parallel = config.get("installer.parallel", True) @@ -76,6 +71,12 @@ def __init__( else: self._max_workers = 1 + self._authenticator = Authenticator( + config, self._io, disable_cache=disable_cache, pool_size=self._max_workers + ) + self._chef = Chef(config, self._env) + self._chooser = Chooser(pool, self._env, config) + self._executor = ThreadPoolExecutor(max_workers=self._max_workers) self._total_operations = 0 self._executed_operations = 0 diff --git a/src/poetry/utils/authenticator.py b/src/poetry/utils/authenticator.py index 4da767919a1..8db92913043 100644 --- a/src/poetry/utils/authenticator.py +++ b/src/poetry/utils/authenticator.py @@ -17,7 +17,7 @@ import requests.auth import requests.exceptions -from cachecontrol import CacheControl +from cachecontrol import CacheControlAdapter from cachecontrol.caches import FileCache from filelock import FileLock @@ -128,6 +128,7 @@ def __init__( io: IO | None = None, cache_id: str | None = None, disable_cache: bool = False, + pool_size: int = 10, ) -> None: self._config = config or Config.create() self._io = io @@ -153,6 +154,7 @@ def __init__( self.get_repository_config_for_url = functools.lru_cache(maxsize=None)( self._get_repository_config_for_url ) + self._pool_size = pool_size def create_session(self) -> requests.Session: session = requests.Session() @@ -160,7 +162,13 @@ def create_session(self) -> requests.Session: if self._cache_control is None: return session - session = CacheControl(sess=session, cache=self._cache_control) + adapter = CacheControlAdapter( + cache=self._cache_control, + pool_maxsize=self._pool_size, + ) + session.mount("http://", adapter) + session.mount("https://", adapter) + return session def get_session(self, url: str | None = None) -> requests.Session: