Написал программу на Питоне, одна из функций которых - отправлять HTTPS-запрос с помощью библиотеки httplib2 и получать ответ. Однако столкнулся с проблемой: если время ожидания превысило заданный промежуток - вываливается ошибка. Решил использовать обработчик ошибок и сделать так, чтобы при таймауте снова отправлялся запрос. А что делать, если ошибка вываливается снова и снова? Тогда я применил метод рекурсии и при ошибке вызывается та же функция с тем же параметром, но уже внутри нее. Собственно вот получившийся код:
def request(param):
headers = {}
url_get = 'https://example.com/?input='+str(param)
https = httplib2.Http('.cache', timeout=10)
try:
resp, content = https.request(url_get, 'GET', headers=headers)
except httplib2.ServerNotFoundError:
print('Сервер недоступен, повторное подключение')
content = request(param)
except ConnectionRefusedError:
print('Соединение разорвано, повторное подключение')
content = request(param)
except httplib2.socket.timeout:
print('Таймаут запроса, повторное подключение')
content = request(param)
except OSError:
print('Нету подключения к сети, ожидание 60 секунд')
time.sleep(60)
content = request(param)
return content
Вопрос такой: насколько этот метод правильный? Есть ли альтернативные варианты?