Skip to content

Commit 669face

Browse files
committed
Change: Allow RemoteProtocolError to trigger retry
1 parent 6934c3f commit 669face

1 file changed

Lines changed: 28 additions & 7 deletions

File tree

pontos/nvd/api.py

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,13 @@
2323
TypeVar,
2424
)
2525

26-
from httpx import URL, AsyncClient, Response, Timeout
26+
from httpx import (
27+
URL,
28+
AsyncClient,
29+
RemoteProtocolError,
30+
Response,
31+
Timeout,
32+
)
2733

2834
from pontos.errors import PontosError
2935
from pontos.helper import snake_case
@@ -450,19 +456,34 @@ async def _get(
450456
"""
451457
headers = self._request_headers()
452458

459+
latest_after_error: Response | RemoteProtocolError
460+
453461
for attempt in range(self._request_attempts):
454462
if attempt > 0:
455463
delay = RETRY_DELAY**attempt
456464
await asyncio.sleep(delay)
457465

458466
await self._consider_rate_limit()
459-
response = await self._client.get(
460-
self._url, headers=headers, params=params
461-
)
462-
if not response.is_server_error:
463-
break
464467

465-
return response
468+
try:
469+
response = await self._client.get(
470+
self._url, headers=headers, params=params
471+
)
472+
473+
if response.is_server_error:
474+
latest_after_error = response
475+
continue
476+
477+
return response
478+
479+
except RemoteProtocolError as e:
480+
latest_after_error = e
481+
continue
482+
483+
if isinstance(latest_after_error, RemoteProtocolError):
484+
raise latest_after_error
485+
486+
return latest_after_error
466487

467488
async def __aenter__(self) -> "NVDApi":
468489
# reset rate limit counter

0 commit comments

Comments
 (0)