Я нашел следующий пример
def prepare_retry_requester(retries: int = 5, forcelist: List = (503,)) -> requests.Session:
requester = requests.Session()
retry = urllib3.Retry(total=retries, backoff_factor=1, status_forcelist=forcelist)
for protocol in 'http://', 'https://':
requester.mount(protocol, requests.adapters.HTTPAdapter(max_retries=retry))
return requester
with prepare_retry_requester(forcelist=[502, 503, 413]) as requester:
response = requester.post(url, data=serialized)
Но он все равно не работает, если я получаю 502
ошибки в течение некоторого времени (сервер перезагружается в течение 10 секунд).
max_retries
в HTTPAdapter, который не восстанавливается после ошибок 502 (по дизайну), поскольку это не ошибка соединения (а аппликативная). Вместо этого вы можете передатьretries
http.request
. См. документы. - person Benjamin Gruenbaum   schedule 16.12.2019