一个高性能的webhook接收服务,用于监听Azure DevOps发送的hooks事件,并将每个POST消息保存为JSON文件。
- 🚀 高性能: 基于FastAPI和Uvicorn,支持异步处理
- 📝 自动记录: 自动将所有webhook事件保存到本地JSON文件
- 🔒 安全性: 支持webhook签名验证(可选)
- 📊 日志记录: 完整的请求日志和错误处理
- ⚡ 并发处理: 支持多worker进程处理高并发请求
- 🎯 易于部署: 简单的配置和启动脚本
pip install -r requirements.txt复制 .env.example 到 .env 并根据需要修改配置:
cp .env.example .env# 开发模式
python main.py
# 或使用启动脚本
chmod +x start.sh
./start.sh- 在Azure DevOps项目中,进入 Project Settings > Service Hooks
- 点击 Create Subscription
- 选择 Web Hooks
- 配置URL为:
http://your-server:8000/webhook/azure-devops - 选择需要监听的事件类型
- 保存配置
GET /- 健康检查端点POST /webhook/azure-devops- Azure DevOps webhook接收端点GET /health- 服务健康状态检查GET /stats- 查看接收统计信息
所有接收到的webhook事件会保存在 hooks/ 目录下,文件命名格式:
hooks/{event_type}_{timestamp}_{uuid}.json
例如:
hooks/git.push_20251023_143052_a1b2c3d4.json
HOST: 服务绑定的主机地址(默认: 0.0.0.0)PORT: 服务端口(默认: 8000)WORKERS: worker进程数(默认: 4)WEBHOOK_SECRET: webhook签名验证密钥(可选)LOG_LEVEL: 日志级别(DEBUG/INFO/WARNING/ERROR)HOOKS_DIR: webhook数据存储目录MAX_PAYLOAD_SIZE: 最大请求体大小(字节)
- 使用异步I/O处理文件写入
- 支持多worker进程并发处理
- 自动处理大payload
- 高效的JSON序列化
查看实时日志:
tail -f logs/webhook.log查看接收统计:
curl http://localhost:8000/stats- 在生产环境中使用HTTPS
- 配置
WEBHOOK_SECRET进行签名验证 - 使用防火墙限制访问来源
- 定期清理旧的webhook数据
- 监控磁盘空间使用
- 检查端口是否被占用:
lsof -i :8000 - 检查依赖是否正确安装:
pip list - 查看错误日志
- 确认Azure DevOps配置的URL正确
- 检查防火墙设置
- 查看服务日志确认请求是否到达
查看 LICENSE 文件了解详情。