Update db_calls.py

Added timeout parameter to generic db_get
This commit is contained in:
Cal Corum 2023-02-21 15:20:48 -06:00
parent 4b0afed6f8
commit e8e3727aae

View File

@ -8,6 +8,7 @@ import csv
AUTH_TOKEN = {'Authorization': f'Bearer {os.environ.get("API_TOKEN")}'}
DB_URL = 'http://database/api'
master_debug = True
def param_char(other_params):
@ -29,14 +30,35 @@ def get_req_url(endpoint: str, api_ver: int = 1, object_id: str = None, params:
return req_url
def db_get(endpoint: str, api_ver: int = 1, object_id: int = None, params: list = None, as_csv: bool = False):
def db_get(endpoint: str, api_ver: int = 1, object_id: int = None, params: list = None, none_okay: bool = True,
timeout: int = 3):
req_url = get_req_url(endpoint, api_ver=api_ver, object_id=object_id, params=params)
log_string = f'get:\n{endpoint} id: {object_id} params: {params}'
logging.info(log_string) if master_debug else logging.debug(log_string)
try:
resp = requests.get(req_url, timeout=timeout)
except requests.ReadTimeout as e:
logging.error(f'Read Timeout: {e}')
raise ConnectionError(f'DB: The internet was a bit too slow for me to grab the data I needed. Please '
f'hang on a few extra seconds and try again.')
resp = requests.get(req_url)
if resp.status_code == 200:
if as_csv:
return csv.reader(map(bytes.decode, resp.content))
return resp.json()
data = resp.json()
log_string = f'{data}'
if master_debug:
logging.info(f'return: {log_string[:1200]}{" [ S N I P P E D ]" if len(log_string) > 1200 else ""}')
else:
logging.debug(f'return: {log_string[:1200]}{" [ S N I P P E D ]" if len(log_string) > 1200 else ""}')
return data
elif none_okay:
data = resp.json()
log_string = f'{data}'
if master_debug:
logging.info(f'return: {log_string[:1200]}{" [ S N I P P E D ]" if len(log_string) > 1200 else ""}')
else:
logging.debug(f'return: {log_string[:1200]}{" [ S N I P P E D ]" if len(log_string) > 1200 else ""}')
return None
else:
logging.warning(resp.text)
raise ValueError(f'DB: {resp.text}')
@ -280,7 +302,7 @@ async def get_players(season, team_abbrev=None, sort=None, injured=None):
if injured:
req_url += f'&injured={injured}'
resp = requests.get(req_url, timeout=3)
resp = requests.get(req_url, timeout=6)
if resp.status_code == 200:
return resp.json()
else: