Как ждать конкретного ответа http в python - PullRequest
0 голосов
/ 11 февраля 2019

У меня проблема с ожиданием ответа 200. Когда я выполняю свой запрос на получение, ожидаемого ресурса нет, а ответ - 204. Что я хочу сделать, это ждать две минуты и, скажем, звонить каждые 10 секунд, чтобыпроверьте ответ 200. Если время истекло, я хочу вернуть ошибку.

def waitForResourceAvailable(response):
    while response.status_code == 204:
        time.sleep(10)
        if response.status_code == 200:
            break

Это работает хорошо, но мне нужно решение для выхода из цикла в случае, если код состояния 200 не появляетсяв указанное время.

1 Ответ

0 голосов
/ 11 февраля 2019

Имейте в виду , что если значение ответа изменяется при проверке в условии while, оно также останавливает итерацию, поэтому оператор if внутри while не нужен.

Примечание: объект ответа должен иметь возможность изменить свое значение, иначе он всегда будет таким же, как просто переменная, а не функция, которая проверяет ответ

Вы можетедобавить простой оператор if со значением времени

def waitForResourceAvailable(response, time):
    timer = 0
    while response.status_code == 204:
        time.sleep(10)
        timer += 10
        if timer > time:
            break
        if response.status_code == 200:
            break

Сделать его еще лучше можно было бы следующим образом:

def waitForResourceAvailable(response, timeout, timewait):
    timer = 0
    while response.status_code == 204:
        time.sleep(timewait)
        timer += timewait
        if timer > timeout:
            break
        if response.status_code == 200:
            break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...