python: вызовите исключение, если ответ повторяет 202 после повторных попыток - PullRequest
0 голосов
/ 08 ноября 2019

Итак, requests.post повышает RequestException, если есть SSLError или неверный URL. Чтобы повысить исключение на 40х, 50х, мы используем response.raise_for_status(). Я интенсивно искал, но не смог найти соответствующую документацию по этому вопросу:

  1. Что означает повторная попытка с requests.packages.urllib3.util.retry повторная попытка по умолчанию, если я не указал status_forcelist,Я предполагаю только на SSLError или неверный URL?
  2. Если я установил status_forcelist=(500), значит ли это, что он будет повторяться, если получит ответ как 500, а затем выкинет RequestException в концепосле заданного числа повторных попыток?
  3. Я хочу, чтобы 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...