19

使用谷歌 url 缩短器 api,它工作正常,直到我开始在负载测试。很快就开始从 Google 返回 403 Rate Limit Exceeded 错误,即使我注册使用该 API 并且它每天有 1,000,000 次点击。我可以看到来自谷歌报告工具的请求,他们只是为所有内容发回 403。403 在 API 的点击量约为 345/350 时开始恢复,已经持续了几个小时。

想法?

4

4 回答 4

8

API 将请求限制为 1 个请求/每秒/每个用户。

用户被定义为唯一的 IP 地址。

因此,如果您从单个 IP 进行负载测试,这将导致您的速率限制问题。

https://developers.google.com/analytics/devguides/reporting/mcf/v3/limits-quotas#general_api

于 2014-07-18T05:24:26.073 回答
2

我不认为“1 个请求/每秒/每个用户”。如文档中所写,在我的情况下是 100% 正确的,或者在谷歌 url 缩短的情况下。(仅供参考:我使用的是“公共 API 访问”,而不是“OAuth”)

我有几乎相同的问题,但对我来说,更有可能是“我在某些时间段内收到某些 URL 的此错误”。这是什么意思?请继续阅读。

这些是我发现的:

  • 我可以同时使用 10 个线程来使用谷歌网址缩短器,但并非总是如此......
  • 在处理时,即使一个 url 在一个线程上失败,其他线程仍然可以获取其他 url。
  • 当一个 url 失败时,后来我再次尝试了相同的 url(即使没有其他进程在运行,它仍然无法在一段时间内工作。甚至,我尝试添加更多字符串,如“&test=1”,它没有帮助但是如果我更改为另一个网址,它可以工作。

所以,我猜谷歌的服务器可能有每个 url 的缓存。如果一个 url 失败,它必须等待一段时间让缓存释放。

所以,我必须写一些像这样令人毛骨悚然的代码来解决我的问题:

  • 当失败时,该特定线程将休眠 1 分钟(是 1 分钟)
  • 并继续尝试 10 次(总的来说,失败的 url 可能需要 10 分钟)

但是,这个令人毛骨悚然的代码对我来说很好,因为我使用的是 ExecutorService,固定线程池大小为 10。所以,如果失败,其他人仍然可以获得缩短的 url。它解决了问题……至少对我来说。

于 2015-05-14T15:08:02.447 回答
-5

你需要去谷歌缩短扩展,并在选项中选择“授予访问权限”

于 2013-10-04T14:24:24.873 回答
-8

右键单击扩展图标,转到选项并单击底部的授予访问权限。

于 2014-09-16T07:37:24.940 回答