From e8e3727aaef2b3a088e782e4a084983924d72ad9 Mon Sep 17 00:00:00 2001 From: Cal Corum Date: Tue, 21 Feb 2023 15:20:48 -0600 Subject: [PATCH] Update db_calls.py Added timeout parameter to generic db_get --- db_calls.py | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/db_calls.py b/db_calls.py index 8587fa4..d70fbd0 100644 --- a/db_calls.py +++ b/db_calls.py @@ -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: