From 55dd0b1420ca17f66a024c165ab3ff3d07bb345b Mon Sep 17 00:00:00 2001 From: Ruben Romero Montes Date: Fri, 13 Dec 2024 12:30:10 +0100 Subject: [PATCH] feat: do not retry for client exceptions Signed-off-by: Ruben Romero Montes --- src/cve/utils/async_http_utils.py | 7 +++++-- src/cve/utils/vulnerable_dependency_checker.py | 1 - 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/cve/utils/async_http_utils.py b/src/cve/utils/async_http_utils.py index 93fc349..89dba20 100644 --- a/src/cve/utils/async_http_utils.py +++ b/src/cve/utils/async_http_utils.py @@ -31,11 +31,12 @@ async def request_with_retry(session: aiohttp.ClientSession, max_retries: int = 10, sleep_time: float = 0.1, respect_retry_after_header: bool = True, - log_on_error=True) -> typing.AsyncIterator[aiohttp.ClientResponse]: + log_on_error=True, + retry_on_client_errors = False) -> typing.AsyncIterator[aiohttp.ClientResponse]: """ Async version of `morpheus.utils.http_utils.request_with_retry` """ - assert not request_kwargs.get('raise_for_status'), "raise_for_status is cincompatible with `request_with_retry`" + assert not request_kwargs.get('raise_for_status'), "raise_for_status is incompatible with `request_with_retry`" try_count = 0 done = False while try_count <= max_retries and not done: @@ -61,6 +62,8 @@ async def request_with_retry(session: aiohttp.ClientSession, actual_sleep_time = max(int(response_headers["Retry-After"]), actual_sleep_time) elif respect_retry_after_header and 'X-RateLimit-Reset' in response_headers: actual_sleep_time = max(int(response_headers["X-RateLimit-Reset"]) - time.time(), actual_sleep_time) + elif not retry_on_client_errors and response.status < 500: + raise e logger.warning("Error requesting [%d/%d]: (Retry %.1f sec) %s: %s", try_count, diff --git a/src/cve/utils/vulnerable_dependency_checker.py b/src/cve/utils/vulnerable_dependency_checker.py index 134395f..f173c80 100644 --- a/src/cve/utils/vulnerable_dependency_checker.py +++ b/src/cve/utils/vulnerable_dependency_checker.py @@ -29,7 +29,6 @@ from ..data_models.cve_intel import CveIntelNvd from ..data_models.dependencies import DependencyPackage -from .async_http_utils import request_with_retry from .clients.intel_client import IntelClient from .string_utils import package_names_match from .url_utils import url_join