"""Caching request handler with retries.""" import json import requests from requests.adapters import HTTPAdapter from urllib3.util.retry import Retry session = requests.Session() retries = Retry( total=5, backoff_factor=2, status_forcelist=[500, 502, 503, 504], respect_retry_after_header=True, ) adapter = HTTPAdapter(max_retries=retries) session.mount("https://", adapter) session.mount("http://", adapter) cache = {} def request_get_cache(url, headers={}): """Cache results of request.""" global cache headers_string = json.dumps(headers) key = url + "-" + headers_string if key in cache: return cache[key] cache[key] = session.get(url, headers=headers) return cache[key]