Jak ponowić próbę tylko raz na wyjątku w Pythonie
Być może zbliżam się do tego w niewłaściwy sposób, ale mam żądanie POST wychodzące:
response = requests.post(full_url, json.dumps(data))
Które mogą potencjalnie zawieść z wielu powodów, niektóre są związane z danymi, niektóre z nich są tymczasowymi awariami, które z powodu źle zaprojektowanego punktu końcowego mogą powrócić jako ten sam błąd (serwer robi nieprzewidywalne rzeczy z nieprawidłowymi danymi). Aby złapać te tymczasowe awarie i pozwolić innym przejść, pomyślałem, że najlepszym sposobem na to jest ponowienie próby raz, a następnie kontynuowanie, jeśli błąd zostanie ponownie podniesiony. Sądzę, że mógłbym to zrobić za pomocą zagnieżdżonej próby / wyjątku, ale wydaje mi się, że to zła praktyka (co jeśli chcę spróbować dwa razy, zanim się poddam?)
Rozwiązaniem byłoby:
try:
response = requests.post(full_url, json.dumps(data))
except RequestException:
try:
response = requests.post(full_url, json.dumps(data))
except:
continue
Czy jest lepszy sposób, aby to zrobić? Czy istnieje ogólnie lepszy sposób radzenia sobie z potencjalnie wadliwymi odpowiedziami HTTP?