41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
import logging
|
|
|
|
import requests
|
|
from tenacity import (
|
|
retry,
|
|
retry_if_exception_type,
|
|
stop_after_attempt,
|
|
wait_exponential,
|
|
)
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
@retry(
|
|
stop=stop_after_attempt(3),
|
|
wait=wait_exponential(multiplier=1, min=2, max=10),
|
|
retry=retry_if_exception_type((requests.exceptions.RequestException,)),
|
|
reraise=True,
|
|
)
|
|
def make_requests(
|
|
url: str, headers: dict = None, params: dict = None, timeout: int = 20
|
|
) -> dict:
|
|
headers = headers or {}
|
|
params = params or {}
|
|
try:
|
|
logger.debug(f"Requesting URL: {url} with params: {params}")
|
|
res = requests.get(url, headers=headers, params=params, timeout=timeout)
|
|
res.raise_for_status()
|
|
return res.json()
|
|
except requests.exceptions.HTTPError as errh:
|
|
logger.error(f"HTTP Error: {errh}")
|
|
raise
|
|
except requests.ConnectionError as errc:
|
|
logger.error(f"Connection Error: {errc}")
|
|
raise
|
|
except requests.exceptions.Timeout as errt:
|
|
logger.error(f"Timeout Error: {errt}")
|
|
raise
|
|
except Exception as e:
|
|
logger.error(f"Unknown Exception: {e}")
|
|
raise
|