如何使用python侦听firebase数据库更改?

如何使用python侦听firebase数据库更改?,python,flask,firebase-realtime-database,webhooks,pythonanywhere,Python,Flask,Firebase Realtime Database,Webhooks,Pythonanywhere,我正在尝试使用Webhook将IFTTT服务与firebase连接。为此,我使用Flask在Pythonywhere上构建了一个python服务器。我成功地做到了这一点,但我希望每次节点中的数据发生变化时都能听到数据库的变化,而不会每次都触发IFTTT。为此,我使用了while循环,但当我试图从IFTTT更改我想要侦听的节点时,问题出现了 from flask import Flask from flask import request import requests app = Flask(

我正在尝试使用Webhook将IFTTT服务与firebase连接。为此,我使用Flask在Pythonywhere上构建了一个python服务器。我成功地做到了这一点,但我希望每次节点中的数据发生变化时都能听到数据库的变化,而不会每次都触发IFTTT。为此,我使用了while循环,但当我试图从IFTTT更改我想要侦听的节点时,问题出现了

from flask import Flask
from flask import request
import requests

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello!'


@app.route("/SENSORS", methods=["POST","GET"])
def handler1():
    val1= [0,0]

while True:
    username1 = request.get_data()
    username1 = username1.decode("utf-8")
    result1 = [x.strip() for x in username1.split(',')]
    print(result1)

    r1 = requests.get('https://myproject-024.firebaseio.com/USERS/DATA.json')    
    r2 = r1.text                                    #Converting it into text
    r3 = [x.strip() for x in r2.split('"')]         #Removing double quotes
    print(r3)

    #Swapping values to compare the previous and current value
    val1[1] = r2
    val1[1],val1[0] = val1[0],val1[1]

    requests.patch('https://myproject-024.firebaseio.com/USERS.json', json = { "SENSOR" : "1"} )


        if val1[0]!=val1[1]:
            responce = {"value1":"DATA1","value2":"DATA2","value3":"DATA3"}
            requests.post('https://maker.ifttt.com/trigger/USERS/with/key/, data=responce)

您正在使用Firebase REST API从实时数据库获取数据。按照您现在使用它的方式,RESTAPI提供了一个基本的请求/响应模型,并且总是在您请求的位置返回数据

要检查数据的更新,您可以。使用ETag可以防止多次获取相同的数据(节省带宽),但它不会实时更新数据的更改


要通过regulat HTTP侦听位置处数据的实时更新,您可以,它使用服务器发送事件(SSE)通知客户端更新。您会注意到,此API与您现在所做的非常不同,因此您需要做一些更改。

我已经接受了您的答案。非常感谢您抽出时间。