Приветствую.
Пытаюсь понять как переписать кусок кода, чтобы работало предсказуемо. Значит у меня есть функция, которая делает запрос с помощью requests. Часто запрос не удается, если не правильно указан протокол (http или https). Я заранее знать правильный протокол не могу, поэтому если вызывается исключение, то я делаю еще одну попытку тупо заменяя https на http или http на https. Вот код функции:
def makeRequestsGet(url, attempt=1):
if attempt <= 2:
try:
response = requests.get(url, headers=headers, verify=False, timeout=30)
response.close()
return response
except ConnectionError as e:
if url.find('https') != -1:
url = url.replace('https', 'http')
else:
url = url.replace('http', 'https')
makeRequestsGet(url, attempt=attempt+1)
else:
return False
Проблема появляется, когда я эту функцию вызываю где либо и в случае если первая попытка запроса заканчивается ошибкой из за неправильного протокола. Тогда происходит следующее:
- Вызываю функцию makeRequestsGet
- Протокол не корректный, возвращается None
- Скрипт выполняется дальше, потому что None тоже результат
- Выполняется вторая попытка makeRequestsGet
- Приходит нормальный ответ с результатами запроса
- Но он уже никому не нужен, потому что уже был None
не могу понять, как переписать функцию, чтобы скрипт не выполнялся, пока не будет совершена вторая попытка запроса при условии, что первая была не удачной. Подскажите, как в этом случае размышлять.