我如何收到在Python Github的网络挂接(How do I receive Github W

2019-07-18 18:44发布

Github上提供发送后收到钩到您选择的URL时,有你的回购活动。 我想要写一个的Python命令行/背景(即没有GUI或Web应用程序)(在NAS更高版本),其持续接收这些传入POST请求,并在我的电脑上运行的应用程序一旦POST从Github上,它收到处理包含内的JSON信息。 只要我有它处理JSON是没有问题的。 所述柱可以来自一个小数目由github上给出的IP地址的; 我打算/希望指定我的计算机上的端口,它应该被发送。

问题是,我不知道有足够的了解网络技术来处理大量的你会发现搜索时选择..我使用Django,采购,插座,瓶,microframeworks ...? 我不知道什么最涉及平均值的条款,以及最完善的,如他们提供太多/太大解决我的问题 - 我根本忙不过来,不知道从哪里开始。

有关POST / GET大多数教程我能找到似乎与发送或直接从网站上请求数据,但不能与不断侦听它的关注。

我觉得这个问题是不是一个真正的困难之一,并将归结为几行,一旦我知道去哪里/如何做到这一点。 任何人都可以提供指针/教程/示例/示例代码?

Answer 1:

下面是通过POST接收数据和做与它的东西(在这种情况下,只需将它打印到标准输出)基本web.py例如:

import web

urls = ('/.*', 'hooks')

app = web.application(urls, globals())

class hooks:
    def POST(self):
        data = web.data()
        print
        print 'DATA RECEIVED:'
        print data
        print
        return 'OK'

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

我发布了一些数据,它使用hurl.it (我的路由器转发8080)之后,看到下面的输出:

$ python hooks.py 
http://0.0.0.0:8080/

DATA RECEIVED: 
test=thisisatest&test2=25

50.19.170.198:33407 - - [27/Jan/2013 10:18:37] "HTTP/1.1 POST /hooks" - 200 OK

你应该能够换出报表打印您的JSON处理。

要指定端口号,请在致电一个额外的参数的脚本:

$ python hooks.py 1234 


Answer 2:

第一件事情是,网络是基于请求 - 响应。 因此,一些会要求你的链接,你会作出相应的反应。 您的服务器应用将不断端口上监听; 你不必担心。

下面是类似的版本在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()

下面是一个样品运行,使用从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 -


Answer 3:

我会用:

https://github.com/carlos-jenkins/python-github-webhooks

您可以配置Web服务器使用它,或者如果你只是需要在不Web服务器上运行有一个过程,你可以启动集成服务器:

python webhooks.py

这将允许你这样做,你说你需要的一切。 它,然而,需要一些设置在你的资料库,并在你的钩。

晚党和无耻autopromotion,对不起。



文章来源: How do I receive Github Webhooks in Python