限流(Rate Limit)
一句话:调用接口太频繁,超过服务商设定的次数上限,被暂时拒绝服务,通常报429错误。
它是什么
为了保护服务器不被过度请求压垮,几乎所有API服务都会设置调用频率上限(比如每分钟最多60次),超过这个上限的请求会被直接拒绝,报错通常是HTTP 429 (Too Many Requests)。
适合干什么
- 批量调用API时频繁遇到429报错
- 多用户共享一个API Key并发调用的场景
不适合干什么
- 单次偶尔调用失败(可能是别的原因,不一定是限流),要先看清报错状态码确认
普通人怎么用
遇到429报错,最简单的处理是加个延迟重试(等几秒再试一次),大部分服务商的限流是短时间窗口内的,等一下就能恢复正常调用。
进阶用户怎么用
实现指数退避重试(第一次等1秒,失败再等2秒、4秒,逐渐拉长间隔),并且给并发请求加排队/限速控制,而不是无脑重试导致情况更糟;关注服务商返回的限流相关响应头(通常会告诉你还能调用多少次、多久后重置)。
常见误区
- 以为限流是自己的账号出了问题,实际是正常的保护机制,几乎所有服务都有
- 遇到限流疯狂立即重试,可能导致限流时间被进一步延长,正确做法是等待后再试
和相似工具的区别
- 和API Key失效(401错误)不是一回事:限流是"调用太快",Key失效是"身份验证失败",报错状态码不同,解决方法也完全不同
入门步骤
- 看清报错状态码是不是429
- 读服务商文档确认具体的限流规则(次数/时间窗口)
- 代码里加上失败重试和延迟机制