Spaces:
Sleeping
Sleeping
| """Shared HTTP session with retry + exponential backoff. | |
| All concrete sources share this session so 429/5xx retries, timeouts, | |
| and TLS reuse are uniform. The private `_http` name is also exposed | |
| from the sources package for tests that introspect retry config. | |
| """ | |
| import requests | |
| from requests.adapters import HTTPAdapter | |
| from urllib3.util import Retry | |
| _retry_strategy = Retry( | |
| total=3, | |
| backoff_factor=0.5, # 0.5s, 1s, 2s | |
| status_forcelist=[429, 500, 502, 503, 504], | |
| allowed_methods=["GET", "POST"], | |
| raise_on_status=False, | |
| ) | |
| _http = requests.Session() | |
| _http.mount("https://", HTTPAdapter(max_retries=_retry_strategy)) | |
| _http.mount("http://", HTTPAdapter(max_retries=_retry_strategy)) | |