Определите код состояния из исключения повторной попытки python

#python #python-3.x #session #python-requests #urllib

#питон #python-3.x #сессия #python-запросы #urllib

Вопрос:

 import requests from requests.adapters import HTTPAdapter from urllib3 import Retry  DEFAULT_RETRIES = 5 DEFAULT_BACKOFF = 0.3   def session_with_retries(max_retries: int = DEFAULT_RETRIES,  backoff_factor: float = DEFAULT_BACKOFF,  proxies: dict = None) -gt; requests.Session:  new_session = requests.Session()  retries = Retry(total=max_retries,  connect=max_retries,  read=max_retries,  status=max_retries,  allowed_methods=frozenset(['HEAD', 'GET', 'POST']),  status_forcelist=frozenset([500, 502, 503, 504]),  backoff_factor=backoff_factor,  )  retry_adapter = HTTPAdapter(max_retries=retries)  new_session.mount('http://', retry_adapter)  new_session.mount('https://', retry_adapter)   if proxies is not None:  new_session.proxies.update(proxies)   return new_session  

Этот код предназначен для логики повторных попыток с запросами python. И тоже отлично работает. Как и ожидалось, после этого он создаст исключение для 503 кода состояния max_retries . Так что в совокупности это вызовет исключение для [500, 502, 503, 504] .

Как я могу получить код состояния, для которого было создано исключение из этого метода. В качестве сообщений об исключениях я мог видеть что-то

 HTTPSConnectionPool(host='some-host', port=443): Max retries exceeded with url: /services/data/v52.0/connect/communities?pageSize=100 (Caused by ResponseError('too many 503 error responses',))  

Я отследил исключения urllib3.exceptions.MaxRetryError , requests.exceptions.RetryError но не смог найти код статуса для исключения.

Строго НЕТ для других библиотек, таких как tenacity