访问频率限制
友好速搭使用 Leaky Bucket(漏桶算法),来限制应用对 API(https://api.youhaosuda.com/) 的访问频率,防止滥用 API,影响基础设施的稳定。
桶的容量是 40,漏出速率,是 2 个每秒。只要桶内有剩余空间,那么请求会被立即处理,当桶中没有剩余空间时,API 会返回错误码:429 - 请求过于频繁。
API 的访问频率限制,是针对单个 access token,一个应用,安装到不同的站点,获取到的 access token 不同。
如何避免429错误
可以通过检测响应头中的X-YHSD-SHOP-API-CALL-LIMIT
,来查看已使用的请求容量:
X-YHSD-SHOP-API-CALL-LIMIT: 35/40
X-YHSD-SHOP-API-CALL-LIMIT
的值,包含两部分:实际使用的容量和桶容量。
其中,实际使用容量,会以每秒 2 个的速率减少。比如,当值为 35/40 时,暂停 10 秒对API的访问,那值会变为 15/40。
建议使用以下两种方式,来避免触发 429 错误:
- 以固定频率访问 API
可以设置固定的频率,去使用 API,当频率为 2 个请求每秒时,那永远不会触发 429 错误。 - 动态调整访问 API 的频率
在每次请求 API 后,都检测X-YHSD-SHOP-API-CALL-LIMIT
,当使用容量过大时,就降低频率,以确保使用容量,在 40 以内。