gpt4 book ai didi

python - 如何在 Python 中接收 Github Webhooks

转载 作者:IT老高 更新时间:2023-10-28 21:57:25 25 4
gpt4 key购买 nike

Github 提议发送 Post-receive hooks当您的仓库有事件时,您选择的 URL。我想编写一个 small Python 命令行/后台(即没有 GUI 或 webapp)应用程序在我的计算机上(后来在 NAS 上)运行,它会不断地监听那些传入的 POST 请求,一旦从 Github收到 POST,它就会处理其中包含的 JSON 信息。一有json就处理它是没有问题的。POST可以来自github给出的少量IP;我计划/希望在我的计算机上指定一个应该发送的端口。

问题是,我对 Web 技术的了解不够,无法处理您在搜索时发现的大量选项。我是否使用 Django、Requests、套接字、Flask、微框架...?我不知道所涉及的大多数术语是什么意思,而且大多数听起来好像它们提供了太多/太大而无法解决我的问题 - 我只是不知所措,不知道从哪里开始。

我能找到的大多数关于 POST/GET 的教程似乎都关注从网站发送或直接请求数据,而不是持续监听它。

我觉得这个问题并不难,一旦我知道去哪里/怎么做,就会归结为几行。任何人都可以提供指针/教程/示例/示例代码吗?

最佳答案

首先,Web 是基于请求-响应的。所以有些东西会请求你的链接,你会做出相应的回应。您的服务器应用程序将持续监听端口;您不必担心。

这里是 Flask 中的类似版本(我选择的微框架):

from flask import Flask, request
import json

app = Flask(__name__)

@app.route('/',methods=['POST'])
def foo():
data = json.loads(request.data)
print "New commit by: {}".format(data['commits'][0]['author']['name'])
return "OK"

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

这是一个示例运行,使用 example from github :

运行服务器(以上代码保存在sample.py中):

burhan@lenux:~$ python sample.py 
* Running on http://127.0.0.1:5000/

这里是对服务器的请求,基本上github会做什么:

burhan@lenux:~$ http POST http://127.0.0.1:5000 < sample.json
HTTP/1.0 200 OK
Content-Length: 2
Content-Type: text/html; charset=utf-8
Date: Sun, 27 Jan 2013 19:07:56 GMT
Server: Werkzeug/0.8.3 Python/2.7.3

OK # <-- this is the response the client gets

这是服务器的输出:

New commit by: Chris Wanstrath
127.0.0.1 - - [27/Jan/2013 22:07:56] "POST / HTTP/1.1" 200 -

关于python - 如何在 Python 中接收 Github Webhooks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14536992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com