使用谷歌 url 缩短器 api,它工作正常,直到我开始在负载测试。很快就开始从 Google 返回 403 Rate Limit Exceeded 错误,即使我注册使用该 API 并且它每天有 1,000,000 次点击。我可以看到来自谷歌报告工具的请求,他们只是为所有内容发回 403。403 在 API 的点击量约为 345/350 时开始恢复,已经持续了几个小时。
想法?
使用谷歌 url 缩短器 api,它工作正常,直到我开始在负载测试。很快就开始从 Google 返回 403 Rate Limit Exceeded 错误,即使我注册使用该 API 并且它每天有 1,000,000 次点击。我可以看到来自谷歌报告工具的请求,他们只是为所有内容发回 403。403 在 API 的点击量约为 345/350 时开始恢复,已经持续了几个小时。
想法?
API 将请求限制为 1 个请求/每秒/每个用户。
用户被定义为唯一的 IP 地址。
因此,如果您从单个 IP 进行负载测试,这将导致您的速率限制问题。
https://developers.google.com/analytics/devguides/reporting/mcf/v3/limits-quotas#general_api
我不认为“1 个请求/每秒/每个用户”。如文档中所写,在我的情况下是 100% 正确的,或者在谷歌 url 缩短的情况下。(仅供参考:我使用的是“公共 API 访问”,而不是“OAuth”)
我有几乎相同的问题,但对我来说,更有可能是“我在某些时间段内收到某些 URL 的此错误”。这是什么意思?请继续阅读。
这些是我发现的:
所以,我猜谷歌的服务器可能有每个 url 的缓存。如果一个 url 失败,它必须等待一段时间让缓存释放。
所以,我必须写一些像这样令人毛骨悚然的代码来解决我的问题:
但是,这个令人毛骨悚然的代码对我来说很好,因为我使用的是 ExecutorService,固定线程池大小为 10。所以,如果失败,其他人仍然可以获得缩短的 url。它解决了问题……至少对我来说。
你需要去谷歌缩短扩展,并在选项中选择“授予访问权限”
右键单击扩展图标,转到选项并单击底部的授予访问权限。