У меня есть следующий блок try except, который мне подходит:
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)
Я хотел бы добавить цикл повторных попыток или функцию, которая повторяет 3 раза при ошибке подключения или ошибке тайм-аута
Я нашел кое-что на SO, что должно работать:
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
Я все еще учусь пробовать, кроме блоков, и поэтому не очень хорошо в них разбираюсь. Как я мог поместить что-то вроде этого цикла в блок выше, чтобы он выглядел так:
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)
Спасибо!
requests.post(endpoint,...
три раза? - person wwii   schedule 05.05.2021functools
, который является базовым python. Но отражает ли эти вопросы и ответы суть того, что вам нужно? - person wwii   schedule 05.05.2021