Request.get: Временный сбой при разрешении имен. Невозможно использовать функцию Session()
Внутри веб-приложения Django я синхронно вызываю внешний API с помощью requests.
request(url=api_url, method="GET")
Это вызывается примерно 1 или 2 раза в минуту, и может масштабироваться до 10 раз в минуту. В основном все работает нормально, хотя иногда я получаю эту ошибку:
HTTPSConnectionPool(host='example.com', port=443): Максимальное количество повторных попыток превышено с url: /api_url/endpoint.json (Вызвано NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f637a4e63a0>: Failed to establish a new connection: [Errno -3]. Временный сбой в разрешении имен'))
Теперь, как я понимаю, правильным решением будет использование Session(), чтобы базовое TCP-соединение использовалось повторно и запросы не должны были каждый раз выполнять разрешение имен (которое, как мы видели, иногда может не сработать без видимых причин).
Однако, Session() не сохраняется после того, как мое приложение Django ответило пользователю. Приложение работает синхронно: Мне бы понадобился внешний сервис, который сохраняет TCP-соединение с внешними API, только для этой цели... это было бы безумием
Проще говоря, я хотел бы кэшировать разрешение имени где-нибудь, потенциально в течение нескольких дней. Возможно ли это?
У меня есть IP-адрес, на который разрешается api_url
. Но я, очевидно, не могу запросить его напрямую.
Какое здесь решение?