这就是问题所在:我有一个使用 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:
谁知道可能发生了什么?