Итак, requests.post
повышает RequestException
, если есть SSLError
или неверный URL. Чтобы повысить исключение на 40х, 50х, мы используем response.raise_for_status()
. Я интенсивно искал, но не смог найти соответствующую документацию по этому вопросу:
- Что означает повторная попытка с
requests.packages.urllib3.util.retry
повторная попытка по умолчанию, если я не указал status_forcelist
,Я предполагаю только на SSLError
или неверный URL? - Если я установил
status_forcelist=(500)
, значит ли это, что он будет повторяться, если получит ответ как 500, а затем выкинет RequestException
в концепосле заданного числа повторных попыток? - Я хочу, чтобы
Retry
повторил попытку, если полученный status_code
не равен 202, и выдает исключение в противном случае после заданного количества повторных попыток. Можно ли это сделать с помощью модуля Retry
?
Мой код:
def client():
client = requests.session()
client.mount(
"https://",
HTTPAdapter(
max_retries=Retry(
total=3, method_whitelist=frozenset(["GET", "POST"]), backoff_factor=0.3
)
),
)
return client
def post(url, json):
try:
with client() as client:
response = client.post(
url, json=json
)
if response.status_code == 202:
logging.info("successfull")
return True
response.raise_for_status()
except requests.exceptions.RequestException as error:
logging.exception("NOT sent successfully: %s" % error)