如何将 webhook 事件添加到 Flask 服务器?

How can I add webhook events to a flask server?

提问人:Cody 提问时间:9/4/2019 更新时间:6/6/2021 访问量:3061

问:

我一直在到处寻找有关如何创建和实现 webhook 的教程,这些 webhook 在后端 API 中侦听事件。例如,如果我有一个用 python flask 编写的服务器,我将如何监听服务器端事件(例如:用户总共创建了 100 条记录),然后执行更多的后端代码或请求外部数据?

from flask import Flask
app = Flask(__name__)


@app.route('/')
def index():
    return {"status": 200}

#Some webhook code listening for events in the server


if __name__ == '__main__':
    app.run()

我应该编写什么来侦听服务器事件?

Python 事件 Flask Webhook 服务器端

评论

1赞 Fábio Correia 9/4/2019
flask.palletsprojects.com/en/1.1.x/signals
0赞 Cody 9/5/2019
谢谢。这基本上就是我正在寻找的。
0赞 Fábio Correia 9/7/2019
我很高兴我确实帮助了你!我会创造答案,所以你可以接受它:)
1赞 Fábio Correia 9/7/2019
有趣的是,知道信号 2 年可以让我变得富有,好吧,至少我现在可以安息了哈哈

答:

2赞 ferdina kusumah 6/6/2021 #1

你可以像这样使用 flask 功能来称呼它before_request

from flask import Flask, jsonify, current_app, request

app = Flask(__name__)


@app.before_request
def hook_request():
    Flask.custom_variable = {
        "message": "hello world",
        "header": request.args.get("param", None)
    }


@app.route('/')
def home():
    variable = current_app.custom_variable
    return jsonify({
        "variable": variable,
    })


if __name__ == '__main__':
    app.run()

像这样测试它

→ curl http://localhost:5000/  
{"message":"hello world"}

→ curl http://localhost:5000\?param\=example
{"variable":{"header":"example","message":"hello world"}}