Skip to content

Commit 458d945

Browse files
committed
feat: retry on 429 with Retry-After support in VulnerableCode session
Signed-off-by: tdruez <tdruez@aboutcode.org>
1 parent eb426ef commit 458d945

1 file changed

Lines changed: 13 additions & 0 deletions

File tree

dejacode_toolkit/vulnerablecode.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88

99
from django.core.cache import caches
1010

11+
from requests.adapters import HTTPAdapter
12+
from urllib3.util.retry import Retry
13+
1114
from dejacode_toolkit import BaseService
1215
from dejacode_toolkit import get_settings
1316
from dejacode_toolkit import logger
@@ -24,8 +27,18 @@ class VulnerableCode(BaseService):
2427
user_agent = get_settings("VULNERABLECODE_USER_AGENT", default="VCIO_API_AGENT")
2528

2629
def get_session(self):
30+
"""Add the required User-Agent header and automatic 429 retry with Retry-After support."""
2731
session = super().get_session()
2832
session.headers.update({"User-Agent": self.user_agent})
33+
retry = Retry(
34+
total=3,
35+
status_forcelist=[429],
36+
allowed_methods={"GET", "POST"},
37+
respect_retry_after_header=True,
38+
)
39+
adapter = HTTPAdapter(max_retries=retry)
40+
session.mount("https://", adapter)
41+
session.mount("http://", adapter)
2942
return session
3043

3144
def get_vulnerabilities_by_purl(

0 commit comments

Comments
 (0)