我们正在积极扩展 webhook 支持。刚刚推出:具有指数退避的自动重试——失败的传递现在将在 30 分钟内重试最多 5 次。即将推出:
- 团队范围的默认 webhook URL
- 用于有效负载验证的加密签名
概览
Webhooks 在长时间运行的操作完成时向你的服务器发送实时 HTTP POST 通知。你的应用程序无需轮询状态即可接收即时更新。使用场景
异步处理
批处理或抓取完成时收到通知,而不是轮询
流水线触发器
数据准备好时自动触发下游处理
警报
在完成时向 Slack、电子邮件或其他系统发送警报
数据同步
使你的数据库与 Olostep 结果保持同步
支持的事件
batch.completed
batch.completed
当批处理完成(所有项目完成或失败)时触发。
crawl.completed
crawl.completed
当抓取完成并且所有发现的页面都已处理完毕时触发。
设置 Webhooks
在创建资源时传递webhook。此 URL 将接收完成通知。
参数名称: 规范参数是
webhook。为了向后兼容,webhook_url 也可以作为别名接受。Webhook 负载
所有 webhook 负载遵循统一的信封结构:信封字段
重试行为
失败的 webhook 传递将在 30 分钟的窗口内自动重试,使用指数退避:
总重试窗口: 30 分钟
每次请求超时: 30 秒
什么算作成功
你的端点必须在 30 秒内返回2xx 状态码。任何其他响应都会触发重试。
最佳实践
快速响应,异步处理
快速响应,异步处理
立即返回
200 OK 并异步处理 webhook。如果你的处理时间超过 30 秒,我们将重试——导致重复传递。实现幂等处理程序
实现幂等处理程序
使用
id 字段去重。存储已处理的事件 ID 并跳过重复项。记录 webhook 接收
记录 webhook 接收
记录所有 webhook 接收以进行调试。包括事件 ID、时间戳和处理结果。
使用 HTTPS 端点
使用 HTTPS 端点
始终为 webhook 端点使用 HTTPS。HTTP 端点容易受到窃听和中间人攻击。
故障排除
未收到 webhooks
未收到 webhooks
- 验证你的请求中是否包含
webhook参数 - 验证你的端点是否可公开访问(不是 localhost)
- 检查你的服务器日志中的传入请求
- 确保你返回的是
2xx状态码
接收到重复的 webhooks
接收到重复的 webhooks
这是重试期间的预期行为。使用
id 字段实现幂等处理:webhooks 超时
webhooks 超时
你的端点必须在 30 秒内响应。异步处理 webhooks:
即将推出
团队默认 URL
在你的帐户设置中配置默认的 webhook URL。所有请求将使用此 URL,除非被覆盖。
签名验证
使用加密签名(HMAC-SHA256)验证 webhook 负载来自 Olostep。
想要提前体验这些功能?请通过 info@olostep.com 联系我们,或加入我们的 Slack 社区。