Github上提供发送后收到钩到您选择的URL时,有你的回购活动。 我想要写一个小的Python命令行/背景(即没有GUI或Web应用程序)(在NAS更高版本),其持续接收这些传入POST请求,并在我的电脑上运行的应用程序一旦POST从Github上,它收到处理包含内的JSON信息。 只要我有它处理JSON是没有问题的。 所述柱可以来自一个小数目由github上给出的IP地址的; 我打算/希望指定我的计算机上的端口,它应该被发送。
问题是,我不知道有足够的了解网络技术来处理大量的你会发现搜索时选择..我使用Django,采购,插座,瓶,microframeworks ...? 我不知道什么最涉及平均值的条款,以及最完善的,如他们提供太多/太大解决我的问题 - 我根本忙不过来,不知道从哪里开始。
有关POST / GET大多数教程我能找到似乎与发送或直接从网站上请求数据,但不能与不断侦听它的关注。
我觉得这个问题是不是一个真正的困难之一,并将归结为几行,一旦我知道去哪里/如何做到这一点。 任何人都可以提供指针/教程/示例/示例代码?
下面是通过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
第一件事情是,网络是基于请求 - 响应。 因此,一些会要求你的链接,你会作出相应的反应。 您的服务器应用将不断端口上监听; 你不必担心。
下面是类似的版本在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 -
我会用:
https://github.com/carlos-jenkins/python-github-webhooks
您可以配置Web服务器使用它,或者如果你只是需要在不Web服务器上运行有一个过程,你可以启动集成服务器:
python webhooks.py
这将允许你这样做,你说你需要的一切。 它,然而,需要一些设置在你的资料库,并在你的钩。
晚党和无耻autopromotion,对不起。