【问题标题】:Google URL Shortener 403 Rate Limit ExceededGoogle URL Shortener 403 超出速率限制
【发布时间】:2013-07-20 11:32:12
【问题描述】:

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

想法?

【问题讨论】:

  • 你是在做来自同一个 IP 号的所有请求吗?

标签: google-api google-url-shortener


【解决方案1】:

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

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

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

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

【讨论】:

  • 这是否记录在某处?我似乎找不到超过每天 1,000,000 条限制的任何信息。当人们向我的 API 发起大量请求时,我遇到了这个问题,我似乎超过了 1 request / per sec / per user 限制
  • 该文档适用于 Analytics,是否适用于 Url Shortener ?我不这么认为......
  • 我们可以增加这个限制吗?我什至尝试将我的帐户升级为付费帐户;我仍然无法更改此限制。
  • 1 request / per second / per user 真的是个笑话。当我将 Google 缩短器集成到我的应用中时,我什至没有想到它会这么低。
【解决方案2】:

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

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

这些是我发现的:

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

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

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

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

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

【讨论】:

  • 由于您使用的是多线程,因此如何维护 1 个请求/每秒/每个用户。因为会有更多的并发请求发生
  • @ManojRamanan ,不,我没有维护它。我的解释试图告诉您,您可以使用超过 1 个请求/每秒/每个用户。
  • @SurasinTancharoen,那么你真的每天达到 1m 吗?
  • @Pacerier 我从来没有尝试过。我的系统只需要不到 1000 个。
【解决方案3】:

您需要转到 google 缩短扩展程序,并在选项中选择“授予访问权限”

【讨论】:

  • 这个问题不是在问谷歌浏览器扩展,而是与通过 API 使用服务并遇到速率限制有关。
【解决方案4】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-01
    • 2015-04-24
    • 2018-07-29
    • 1970-01-01
    • 2017-02-28
    相关资源
    最近更新 更多