Запросы зависают, если не указан аргумент таймаут
Мой бэкенд работает на openshift и делает get-запросы к другим кластерам openshift через kubernetes python client. У меня возникла проблема, когда запросы зависают, пока не будет достигнуто значение тайм-аута по умолчанию. Я провел несколько тестов в pod, чтобы проверить, может ли он связаться с другими кластерами openshift, и обнаружил следующее:
requests.get("some_other_cluster_api_url")
будет висеть и корректно вернется через 2 минуты, но requests.get("some_other_cluster_api_url", timeout=1)
вернется корректно через 1 секунду. Почему запрос не возвращается сразу в первом случае?
Edit: curl также мгновенно возвращает правильный ответ
Согласно этому документу Timeout Doc, в первом случае вы не установили никакого значения таймаута По умолчанию запросы не имеют таймаута, если значение таймаута не установлено явно. Без таймаута ваш код может зависнуть на несколько минут или больше.
Во втором случае вы установили значение тайм-аута равным 1, что возвращает ответ только через 1 секунду.
Например :
If you specify a single value for the timeout, like this: r = requests.get('https://github.com', timeout=5)
Затем он возвращает ответ через 5 секунд .
Обратитесь к этому Doc и SO для получения дополнительной информации и использования таймаута запросов.