Update db_calls.py

Add retries to database calls
This commit is contained in:
Cal Corum 2023-04-25 01:43:17 -05:00
parent d3b775432c
commit 30cc6d2af7

View File

@ -39,12 +39,18 @@ def db_get(endpoint: str, api_ver: int = 1, object_id: int = None, params: list
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.')
retries = 0
while True:
try:
resp = requests.get(req_url, timeout=timeout)
break
except requests.ReadTimeout as e:
logging.error(f'Get Timeout: {req_url} / retries: {retries} / timeout: {timeout}')
if retries > 1:
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.')
timeout += [2, 5][retries]
retries += 1
if resp.status_code == 200:
data = resp.json()
@ -72,12 +78,19 @@ def db_patch(endpoint: str, object_id: int, params: list, api_ver: int = 1, time
log_string = f'patch:\n{endpoint} {params}'
logging.info(log_string) if master_debug else logging.debug(log_string)
try:
resp = requests.patch(req_url, headers=AUTH_TOKEN, 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 '
retries = 0
while True:
try:
resp = requests.patch(req_url, headers=AUTH_TOKEN, timeout=timeout)
break
except requests.Timeout as e:
logging.error(f'Patch Timeout: {req_url} / retries: {retries} / timeout: {timeout}')
if retries > 1:
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.')
timeout += [min(3, timeout), min(5, timeout)][retries]
retries += 1
if resp.status_code == 200:
data = resp.json()
log_string = f'{data}'
@ -96,12 +109,19 @@ def db_post(endpoint: str, api_ver: int = 1, payload: dict = None, timeout: int
log_string = f'post:\n{endpoint} payload: {payload}\ntype: {type(payload)}'
logging.info(log_string) if master_debug else logging.debug(log_string)
try:
resp = requests.post(req_url, json=payload, headers=AUTH_TOKEN, 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.')
retries = 0
while True:
try:
resp = requests.post(req_url, json=payload, headers=AUTH_TOKEN, timeout=timeout)
break
except requests.Timeout as e:
logging.error(f'Post Timeout: {req_url} / retries: {retries} / timeout: {timeout}')
if retries > 1:
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.')
timeout += [min(3, timeout), min(5, timeout)][retries]
retries += 1
if resp.status_code == 200:
data = resp.json()
log_string = f'{data}'
@ -115,17 +135,24 @@ def db_post(endpoint: str, api_ver: int = 1, payload: dict = None, timeout: int
raise ValueError(f'DB: {resp.text}')
def db_delete(endpoint: str, object_id: int, api_ver: int = 1):
def db_delete(endpoint: str, object_id: int, api_ver: int = 1, timeout=3):
req_url = get_req_url(endpoint, api_ver=api_ver, object_id=object_id)
log_string = f'delete:\n{endpoint} {object_id}'
logging.info(log_string) if master_debug else logging.debug(log_string)
try:
resp = requests.delete(req_url, headers=AUTH_TOKEN, timeout=3)
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 '
retries = 0
while True:
try:
resp = requests.delete(req_url, headers=AUTH_TOKEN, timeout=timeout)
break
except requests.ReadTimeout as e:
logging.error(f'Delete Timeout: {req_url} / retries: {retries} / timeout: {timeout}')
if retries > 1:
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.')
timeout += [min(3, timeout), min(5, timeout)][retries]
retries += 1
if resp.status_code == 200:
data = resp.json()
log_string = f'{data}'