Python3实现Webhook

# coding:utf-8

import socket
import os
port = 10000

from multiprocessing import Process
def handle_client(client_socket):
    response_start_line = "HTTP/1.1 200 OK\r\n"
    response_headers = "Server: Webhook\r\n"
    response_body = "webhook is running..."
    response = response_start_line + response_headers + "\r\n" + response_body
    client_socket.send(bytes(response))
    client_socket.shutdown(2)
    client_socket.close()
    ret = os.system("sh ./bash.sh")
    print str(ret)

if __name__ == "__main__":
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_socket.bind(("", port))
    server_socket.listen(128)
    while True:
        client_socket, client_address = server_socket.accept()
        print("connecting...")
        handle_client_process = Process(target=handle_client, args=(client_socket,))
        handle_client_process.start()

使用说明

可以使用nohup后台运行此脚本,如 nohup python webhook.py & 同时,目录下需要放置需要钩子被访问后的执行脚本 bash.sh,如 git pull