python的Firestore侦听器

python的Firestore侦听器,python,google-cloud-firestore,Python,Google Cloud Firestore,我想知道一种方法来监听Firestore中文档中发生的任何更改,如添加新文档或删除文档。但是我找不到关于这个问题的任何相关文档,所以如果有人在发布代码片段之前使用了这个,请帮助我 为了克服这个问题,我做了一个无限循环来检查每秒是否有任何更改,但大约15分钟后,如果有太多请求给我一个错误 编辑 在使用了On-snapshot监听器之后,我的应用程序什么都不做,它只是在没有错误的情况下运行,然后终止,并低于我使用的代码 import firebase_admin from firebase_admi

我想知道一种方法来监听Firestore中文档中发生的任何更改,如添加新文档或删除文档。但是我找不到关于这个问题的任何相关文档,所以如果有人在发布代码片段之前使用了这个,请帮助我

为了克服这个问题,我做了一个无限循环来检查每秒是否有任何更改,但大约15分钟后,如果有太多请求给我一个错误

编辑

在使用了On-snapshot监听器之后,我的应用程序什么都不做,它只是在没有错误的情况下运行,然后终止,并低于我使用的代码

import firebase_admin
from firebase_admin import firestore , credentials

cred = credentials.Certificate("AdminSDK.json")
firebase_admin.initialize_app(cred)

db = firestore.client()


def on_snapshot(col_snapshot, changes, read_time):
    print(u'Callback received query snapshot.')
    print(u'Current cities in California: ')
    for change in changes:
        if change.type.name == 'ADDED':
            print(u'New city: {}'.format(change.document.id))
        elif change.type.name == 'MODIFIED':
            print(u'Modified city: {}'.format(change.document.id))
        elif change.type.name == 'REMOVED':
            print(u'Removed city: {}'.format(change.document.id))
col_query = db.collection(u'NeedClassification')
query_watch = col_query.on_snapshot(on_snapshot)

我也有同样的问题,根本原因是我没有通过在结尾添加以下内容来让脚本继续运行:

while True:
time.sleep(1)
print('processing...')
作为参考,我的整个代码和输出是:

import firebase_admin
import google.cloud
from firebase_admin import credentials, firestore
import time

print('Initializing Firestore connection...')
# Credentials and Firebase App initialization. Always required
firCredentials = credentials.Certificate("./key.json")
firApp = firebase_admin.initialize_app (firCredentials)

# Get access to Firestore
db = firestore.client()
print('Connection initialized')

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('audio').document('filename')
doc_watch = doc_ref.on_snapshot(on_snapshot)

# Keep the app running
while True:
    time.sleep(1)
    print('processing...')
输出(添加循环之前,输出在连接初始化时停止):


希望这能有所帮助。

看看你是否在工作中遇到困难,编辑您的问题,以包括“如何仅在创建和获取插入文档的数据时侦听?”我尝试了您的解决方案,但它使用了大量网络,所以我使用node JS API侦听更改,当它发现更改时,它会生成一个python进程,并将文档ID作为parm传递,以便python文件可以使用itIt执行任何它想要的操作应该使用大量网络作为firestore体系结构,但应该避免这种情况。你是如何测试它的@Mohamednashaatt非常感谢ecdemomaniaKay的回答,我也有同样的问题。您现在知道是否有方法等待第一个快照,然后继续执行代码吗?
Initializing Firestore connection...
Connection initialized
Received document snapshot: filename
processing...
processing...
processing...
processing...
processing...
processing...
Received document snapshot: filename
processing...
processing...
# ...[and so on]