Почему Firebase стала возвращать requests.exceptions.ConnectionError: HTTPSConnectionPool?

Такая вот проблема: есть у меня приложение, которое использует Real Time Data Base от Firebase. Все отлично работало до недавних пор. Буквально неделю назад стали вываливаться requests.exceptions.ConnectionError: HTTPSConnectionPool. При любых запросах к базе, но через раз. Иногда данные возвращаются, иногда - нет. Причем, проблема возникла в Казахстане (мое приложение работает именно там). В Ростове, например, программа продолжает работать без ошибок. Я уже и таймаут запроса увеличил:

self.app = firebase_admin.initialize_app(
    self.credentials,
        {
            ...,
            "httpTimeout": 320,
        },
)

И хедеры добавил в запрос:

HEADER = {
    "User-Agent": "Mozilla/5.0 "
    "(Windows NT 10.0; Win64; x64) "
    "AppleWebKit/537.36 (KHTML, like Gecko) "
    "Chrome/70.0.3538.77 Safari/537.36"
}

Но вот такие ошибки продолжают сыпаться через раз:

    requests.exceptions.ConnectionError: HTTPSConnectionPool(
        host='name-base.firebaseio.com', port=443):
            Max retries exceeded with url: /name-base/Path/To/Data.json (
                Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x0000021F1779F310>:
                    Failed to establish a new connection: [WinError 10060]
                    попытка установить соединение была безуспешной,
                    т.к. от другого компьютера за требуемое время не получен нужный отклик,
                    или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера'))

Причем, если отловить в ветке except исключение и снова послать запрос, то повторный запрос вернет данные:

    def get_request(self, date_request: str) -> NoReturn:
        try:
            self.real_time_firebase.get_request(
                f"{self.type_base}/{self.name_base_registry}",
                date_request,
                headers=HEADER,
            )
        except requests.exceptions.ConnectionError:
            self.get_request(date_request)

Нижеследующий код:

import requests
from firebase import firebase


class Base:
    def __init__(self):
        self.real_time_firebase = firebase.FirebaseApplication(
            "https://loginappmvc-5a4aa-default-rtdb.firebaseio.com/", None
        )
        self.type_base = "UserData"
        self.name_base_users = "LoginsPasswords"

    def get_data_from_base_users(self):
        try:
            data = self.real_time_firebase.get(self.type_base, self.name_base_users)
        except requests.exceptions.ConnectionError:
            return None
        return data


base = Base()
for i in range(20):
    print(base.get_data_from_base_users())

... отрабатывает все запросы в Луганске:

введите сюда описание изображения

Но тот же код, запущенный из Казахстана, пять раз падает с ConnectionError:

введите сюда описание изображения

Кто знает, что могло случится?


Ответы (1 шт):

Автор решения: Xyanight

Если кому интересно, проблема решилась путем переноса базы данных с сервера США на сервер Сингапура

→ Ссылка