gpt4 book ai didi

python - 让 Flask 监听我的 Firestore 树中的实时更新

转载 作者:太空宇宙 更新时间:2023-11-03 19:56:20 24 4
gpt4 key购买 nike

我正在尝试让 Flask 监听我的 Firestore 树中的实时更新。

我在 link 的文档中找到了此代码片段:

# Create a callback on_snapshot function to capture changes
def on_snapshot(doc_snapshot, changes, read_time):
for doc in doc_snapshot:
print(u'Received document snapshot: {}'.format(doc.id))

doc_ref = db.collection(u'cities').document(u'SF')

# Watch the document
doc_watch = doc_ref.on_snapshot(on_snapshot)

但我不确定应该如何在 Flask 中使用它。

基本上我想要的是让 Flask 监听 Firestore 中文档的更改,然后将这些更改发送到我的前端应用程序 (Reactjs)。我一直在研究 Flask-SocketIO,这似乎是我所需要的,但我不确定。

有人可以帮助我吗?

编辑

我正在尝试这样做:

# Create a callback on_snapshot function to capture changes
def on_snapshot(doc_snapshot, changes, read_time):
for doc in doc_snapshot:
flask_print("Received document snapshot: {}".format(doc.id))
flask_print("snapshot was recieved from firebase!")
emit("snapshot", {"data": doc.id})


@socketio.on("snapshot")
def snapshot_to_ferontend(snapshot):
flask_print("snapshot was sent to frontend!")
send(snapshot)


class SubscribeToGameById(Resource):
def __init__(self):
parser = reqparse.RequestParser()
parser.add_argument("game_id", required=True)
self.args = parser.parse_args()

def put(self):
doc_ref = db.collection("games").document(self.args["game_id"])
doc_ref.on_snapshot(on_snapshot)

但我收到一条错误消息:“RuntimeError:在请求上下文之外工作。”

最佳答案

您可以使用库flask-boiler来提供内容。在 View 模型中介器 GameViewMediator 中实现 notify 方法,如下所示:

class GameViewMediator(ViewMediatorDAV):

def notify(obj):
send(obj.to_dict())

并将 View 模型 GameView 绑定(bind)到域模型 Game:

game_view = GameView()
game_view.bind_to(key="game", obj_type=Game, doc_id="game_id")
game_view.register_listener()

您应该看到 websocket 在每次更改时都会发出游戏快照。

关于python - 让 Flask 监听我的 Firestore 树中的实时更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59511899/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com