Firestore (python) слушатель закончил скрипт вместо прослушивания изменений - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь настроить прослушиватель on_snapshot для firestore на python.Однако когда я запускаю программу, она завершает работу без каких-либо действий, не говоря уже о прослушивании.

Чего мне не хватает?

Я пытался получить однократное чтение, т.е. .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)

1 Ответ

1 голос
/ 24 сентября 2019

Кажется, вы пытаетесь запустить этот код как скрипт, который, кажется, завершается до выполнения функции обратного вызова.Поэтому постарайтесь дать объекту 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();).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...