I have the following try except block that works well for me:
try:
r = requests.post(endpoint,data=json.dumps(report_params),headers=headers)
r.raise_for_status()
except requests.exceptions.HTTPError as errhttp:
print ("Http Error:",errhttp)
mbody = "The process encountered the following HTTP error: " + str(errhttp)
sendmail(fromaddr, toaddr, msubject, mbody)
except requests.exceptions.ConnectionError as errconn:
print ("Error Connecting:",errconn)
mbody = "The process encountered the following connection error: " + str(errconn)
sendmail(fromaddr, toaddr, msubject, mbody)
except requests.exceptions.Timeout as errtimeout:
print ("Timeout Error:",errtimeout)
mbody = "The process timed out after 3 tries and gave the error: " + str(errtimeout)
sendmail(fromaddr, toaddr, msubject, mbody)
except requests.exceptions.RequestException as err:
print ("No idea what the hell happened",err)
mbody = "The process encountered the following unexpected error: " + str(err)
sendmail(fromaddr, toaddr, msubject, mbody)
I would like to add a retry loop or function that retries 3 times on a connection error or timeout error
I have found something on SO that should work:
tries = 3
for i in range(tries):
try:
do_the_thing()
except KeyError as e:
if i < tries - 1: # i is zero indexed
continue
else:
raise
break
I am still learning try except blocks and therefore not very good at them. How could I put something like that loop inside the above block so that it looks like this:
try:
r = requests.post(endpoint,data=json.dumps(report_params),headers=headers)
r.raise_for_status()
except requests.exceptions.HTTPError as errhttp:
print ("Http Error:",errhttp)
mbody = "The process encountered the following HTTP error: " + str(errhttp)
sendmail(fromaddr, toaddr, msubject, mbody)
except requests.exceptions.ConnectionError as errconn:
#### RETRY 3 TIMES AND IF SUCCESSFUL, CONTINUE TO NEXT EXCEPT STATEMENT. IF UNSUCCESSFUL, SEND THE EMAIL
print ("Error Connecting:",errconn)
mbody = "The process failed to connect after 3 tries and gave the following error: " + str(errconn)
sendmail(fromaddr, toaddr, msubject, mbody)
except requests.exceptions.Timeout as errtimeout:
#### RETRY 3 TIMES AND IF SUCCESSFUL, CONTINUE TO NEXT EXCEPT STATEMENT. IF UNSUCCESSFUL, SEND THE EMAIL
print ("Timeout Error:",errtimeout)
mbody = "The process timed out after 3 tries and gave the error: " + str(errtimeout)
sendmail(fromaddr, toaddr, msubject, mbody)
except requests.exceptions.RequestException as err:
print ("No idea what the hell happened",err)
mbody = "The process encountered the following unexpected error: " + str(err)
sendmail(fromaddr, toaddr, msubject, mbody)
Thank you!
Aucun commentaire:
Enregistrer un commentaire