Firestore (python) 侦听器完成了脚本,而不是侦听更改



我正在尝试在python上设置一个火库on_snapshot侦听器。 但是,当我运行程序时,它无需执行任何操作即可完成运行,更不用说侦听了。

我错过了什么?

我试图一次性读取,即.get((并且它有效,所以我知道这不是包/凭据问题。

import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
cred = credentials.Certificate("serviceAccountKey.json")
firebase_admin.initialize_app(cred)
db = firestore.client()
doc_ref = db.collection(u'someCollection').document(u'someDoc')
def on_snapshot (doc_snapshot, changes, read_time):
for doc in doc_snapshot:
print(u'New doc data: {}'.format(doc.id))
doc_watch = doc_ref.on_snapshot(on_snapshot)

您似乎试图将此代码作为脚本运行,该脚本似乎在执行回调函数之前终止。所以尽量让doc_watch对象活得足够长。

例如,使用sleep

from time import sleep
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
cred = credentials.Certificate("serviceAccountKey.json")
firebase_admin.initialize_app(cred)
db = firestore.client()
doc_ref = db.collection(u'someCollection').document(u'someDoc')
def on_snapshot (doc_snapshot, changes, read_time):
global count
for doc in doc_snapshot:
print(u'New doc data: {}'.format(doc.id))
doc_watch = doc_ref.on_snapshot(on_snapshot)
sleep(3)
doc_watch.unsubscribe()

并且不要忘记在;)结束时unsubscribe()

最新更新