用途:为 Apollo.io API 调用实现稳健的限流与退避。Apollo 采用固定窗口限流,按端点每分钟限额并带每秒突发限制,超限返回 HTTP 429。
前提:有效 Apollo API 密钥,Node.js 18+。
主要能力:
- 按端点滑动窗口限流:搜索、人员/组织增强、联系人 CRUD、序列等通常每分钟 100 次、每秒突发 10 次;批量人员增强为每分钟 10 次、每秒 2 次(每次最多 10 条)。
- 指数退避:优先遵循 429 响应中的 retry-after 头;无该头时按 1s、2s、4s、8s 递增至 60s,并可加随机抖动;仅对 429 与 5xx 重试。
- 基于 p-queue 的请求队列:按端点类别设置并发与每秒间隔上限。
- 响应头监控:读取 x-rate-limit-limit 与 x-rate-limit-remaining,使用率超 80% 时告警,并可推迟非关键请求。
使用方式:按步骤建立滑动窗口限流器、带退避的请求封装、队列与监控器,再通过 queuedRequest 与 withBackoff 组合调用 Apollo 端点。示例仅展示思路,具体代码见资料,不在此抄录。
适用场景:批量搜索或增强、需要控制请求吞吐、处理 429 与 5xx 重试的 Node.js 集成。
限制:限流数值为 2025 年官方数据,可能变动,应以实际响应头为准;依懒 p-queue、axios 等库;具体版本与安装命令资料未提供;文中未涉及定价与授权信息。