提问人:Vlad Sunny 提问时间:10/15/2023 最后编辑:Vlad Sunny 更新时间:10/21/2023 访问量:43
在 firestore 中使用 firebase-admin 通过 python 请求时,程序会冻结
When requesting via python using firebase-admin in firestore, the program freezes
问:
我在 firebase 上创建了一个常规项目,在那里连接了 firestore,生成了一个私钥,编写了一个简单的代码来向集合中添加元素,但程序在请求行中冻结。此外,奇怪的是,在此之前,我制作了一个电报机器人,该机器人以相同的原理应用于 firestore,托管它,现在它工作正常。
法典:
import firebase_admin
from firebase_admin import credentials, firestore
import time
cred = credentials.Certificate("serviceAccountKey.json")
firebase_admin.initialize_app(cred)
db = firestore.client()
db.collection('persons').add({
'name': 'vlad',
'age': 40
})
print('done')
起初我以为可能无法同时在免费版的 firebase 上使用两个项目,但在我停止了我托管的机器人后,没有任何变化。然后我尝试创建一个新的Google帐户,通过该帐户进入firebase,在那里我还使用firestore创建了一个项目,但没有任何变化。
另一件有趣的事情是,如果我在我的计算机上运行我托管的这个机器人的代码,那么访问 firestore 也不起作用,但相同的代码在远程服务器上有效。我还需要注意,我的带有 svelte 的 javascript 网站可以很好地与 firestore 配合使用。
这是我的机器人的 Firebase 的一部分:
from copy import deepcopy
from typing import Union
import firebase_admin
from firebase_admin import credentials, firestore
user_dict_template = {
'state': None,
'lang': 'en'
}
cred = credentials.Certificate("serviceAccountKey.json")
app = firebase_admin.initialize_app(cred)
db = firestore.client()
users_db = db.collection('users_tg')
def get_users() -> list[int]:
users = list(map(lambda x: int(x.id), users_db.stream()))
return users
def add_user(uid: Union[int, str]) -> None:
users_db.document(str(uid)).set(deepcopy(user_dict_template))
def get_user(uid: Union[int, str]) -> dict:
user = users_db.document(str(uid)).get()
return user.to_dict()
def is_user_updated(uid: Union[int, str]) -> bool:
return set(get_user(uid).keys()) == set(user_dict_template.keys())
def update_user(uid: Union[int, str]) -> None:
old_user = get_user(uid)
new_user = deepcopy(user_dict_template)
for key in old_user.keys():
if new_user.get(key):
new_user[key] = old_user[key]
users_db.document(str(uid)).update(new_user)
def update_value(uid: Union[int, str], update: dict) -> None:
user = users_db.document(str(uid))
user.update(update)
实时数据库工作
答: 暂无答案
评论