lljz66's picture
Upload google_play_scraper/utils/http_utils.py
6066f54 verified
Raw
History Blame Contribute Delete
960 Bytes
"""HTTP Client with retries and delays."""
import time
import requests
from typing import Dict
from google_play_scraper.config.settings import SETTINGS
from google_play_scraper.exceptions import RateLimitError, RequestError
session = requests.Session()
def get(url: str, retries: int = 3, delay: float = 1.0) -> Dict:
"""Make GET request with retries."""
for attempt in range(retries):
try:
response = session.get(url, timeout=SETTINGS["timeout"])
response.raise_for_status()
return response.json()
except requests.exceptions.HTTPError as e:
if response.status_code == 429:
raise RateLimitError("Rate limit exceeded")
raise RequestError(f"HTTP error: {e}")
except requests.exceptions.RequestException as e:
if attempt == retries - 1:
raise RequestError(f"Request failed: {e}")
time.sleep(delay)
return {}