问题描述
firebase = pyrebase.initialize_app(config)
db = firebase.database()
while True:
result = db.child("imgPostStatus").get()
isImagetoScan = None
for elements in result.each():
isImagetoScan = elements.val()
if isImagetoScan:
#perform the rest of the code
#set isImagetoScan to false in the DB
上面的代码不断地从数据库中获取数据,并且仅在isImagetoScan
为true时运行其余代码。有没有一种方法可以添加一个侦听器,以便在数据库中的值发生更改时触发代码,而不是像这样一遍又一遍地手动遍历循环?
用户here似乎已使用REST API解决了此问题,我对REST API并不熟悉。如果本文中提到的方法是正确的解决方案,该如何在代码中实现呢?
解决方法
您的代码使用get
,它将获取数据并立即继续
要收听获取数据,请遵循streaming updates上的文档。从那里:
def stream_handler(message):
print(message["event"]) # put
print(message["path"]) # /-K7yGTTEp7O549EzTYtI
print(message["data"]) # {'title': 'Pyrebase',"body": "etc..."}
my_stream = db.child("posts").stream(stream_handler)
这将打开一个SSE连接,并通过HTTP发送更新。
请注意,Firebase也有一个Admin SDK for Python,它也支持通过其listen
method进行流式更新。