0

我有一些 python 代码在这样的服务器上 24/7 运行:

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为真时才运行其余的代码。有没有办法添加一个侦听器,以便在数据库中的值发生更改时触发代码,而不是像这样一遍又一遍地手动迭代循环?

这里的用户似乎已经使用 REST API 解决了这个问题,我不熟悉 REST API。如果这篇文章中提到的方法是正确的解决方案,我将如何在我的代码中实现这一点?

4

1 回答 1

1

您的代码使用get,它获取数据并立即继续

收听数据,请遵循有关流式更新的文档。从那里:

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 还有一个用于 Python 的 Admin SDK,它还通过其listen方法支持流式更新。

于 2020-09-18T04:12:54.043 回答