Cómo reintentar solo una vez en la excepción en python
Puede que me esté acercando a esto de manera incorrecta, pero tengo una solicitud POST que sale:
response = requests.post(full_url, json.dumps(data))
Lo que potencialmente podría fallar por varias razones, algunas de ellas relacionadas con los datos, otras con fallas temporales, que debido a un punto final mal diseñado bien pueden regresar como el mismo error (el servidor hace cosas impredecibles con datos no válidos). Para detectar estos fallos temporales y dejar pasar a otros, pensé que la mejor manera de hacerlo sería volver a intentarlo una vez y luego continuar si el error vuelve a aparecer. Creo que podría hacerlo con un intento anidado / excepto, pero a mí me parece una mala práctica (¿y si quiero intentarlo dos veces antes de rendirme?)
Esa solución sería:
try:
response = requests.post(full_url, json.dumps(data))
except RequestException:
try:
response = requests.post(full_url, json.dumps(data))
except:
continue
¿Hay una mejor manera de hacer esto? Alternativamente, ¿hay una mejor manera en general de lidiar con respuestas HTTP potencialmente defectuosas?