【问题标题】:Google Calendar api - rate limit exceeded (even though it's not)Google Calendar api - 超出速率限制(即使没有)
【发布时间】:2018-01-08 08:44:36
【问题描述】:

我有一个可与各种 Google API 配合使用的 App Engine 应用。我开始了一个同步任务,将 3000 个事件同步到各种用户日历。它工作了一段时间,但现在我收到以下错误:

PHP Fatal error:  Uncaught exception 'Google_Service_Exception' with message '{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "rateLimitExceeded",
    "message": "Rate Limit Exceeded"
   }
  ],
  "code": 403,
  "message": "Rate Limit Exceeded"
 }
}

如果我查看 Api Dashboard,限制真的很高:

每天查询 1,000,000
每个用户每 100 秒的查询数为 50,000,000。

我怎样才能克服这个错误?我希望完成此任务,以便用户在他们的日历中看到这些事件。

【问题讨论】:

标签: google-app-engine google-api google-calendar-api


【解决方案1】:

documentaion 中所述,用户速率限制是洪水保护。一个应用每秒只能发出 X 个请求。

403: 超出速率限制 已达到开发者控制台的每用户限制。

    {
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "rateLimitExceeded",
    "message": "Rate Limit Exceeded"
   }
  ],
  "code": 403,
  "message": "Rate Limit Exceeded"
 }
}

建议的操作:

使用exponential backoff

您可以尝试添加配额用户,这有时会有所帮助。

quotaUser 唯一标识用户的任意字符串。
即使在用户 IP 地址未知的情况下,您也可以从服务器端应用程序强制执行每个用户的配额。例如,当应用程序代表用户在 App Engine 上运行 cron 作业时,就会发生这种情况。 您可以选择任何唯一标识用户的任意字符串,但限制为 40 个字符。

如果您收到配额错误,那么即使您认为它没有超出,它也已被超出。不能增加应用程序级别的配额。你唯一能做的就是放慢速度。

【讨论】:

  • 如您所见,我得到的错误不是 userRateLimitExceeded 而是 rateLimitExceeded。这是完全不同的。你的回答根本没有帮助。我也提高了限制。
  • 它是应用程序级别的配额,这意味着除了实施退避和减速之外你无能为力。如果内存服务大约每秒 10 次或每 100 秒 100 次,则曾经记录过应用程序级别的配额是多少。他们似乎已将其从文档中删除,这意味着它已更改。
  • “每位用户每 100 秒的查询次数”如何高于“每天的查询次数”
  • 如果您希望 google 在您每天用完查询时不关心,您可以在一小时内使用您的每日配额。作为开发人员,您可以申请配额延长或在当天考虑好您的请求,以免您用完。
【解决方案2】:

我也找不到这个问题的答案。默认是每 100 秒 500 个请求,即使我增加它,一段时间后,我也只能发出 5 个请求/秒,与 500 的限制相匹配。

这意味着始终使用旧的默认值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    相关资源
    最近更新 更多