Google Calendar api - 超出速率限制(即使不是)

Fil*_*lip 6 google-app-engine google-calendar-api google-api

我有一个适用于各种 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"
 }
}
Run Code Online (Sandbox Code Playgroud)

如果我查看 Api 仪表板,限制确实很高:

每天
查询1,000,000每用户每 100 秒查询 50,000,000。

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

DaI*_*mTo 4

正如文档中所述,用户速率限制是防洪。应用程序每秒只能发出 X 次请求。

403: Rate Limit Exceeded 已达到开发者控制台的每用户限制。

    {
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "rateLimitExceeded",
    "message": "Rate Limit Exceeded"
   }
  ],
  "code": 403,
  "message": "Rate Limit Exceeded"
 }
}
Run Code Online (Sandbox Code Playgroud)

建议采取的行动:

使用指数退避

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

quotaUser 唯一标识用户的任意字符串。
即使在用户的 IP 地址未知的情况下,您也可以从服务器端应用程序强制实施每用户配额。例如,当应用程序代表用户在 App Engine 上运行 cron 作业时,就会出现这种情况。您可以选择唯一标识用户的任意字符串,但其长度不得超过 40 个字符。

如果您收到配额错误,则说明已超出配额,即使您认为没有超出。应用程序级别配额无法增加。你唯一能做的就是放慢速度。

  • 如您所见,我得到的错误不是 userRateLimitExceeded 而是rateLimitExceeded。这是完全不同的。你的回答根本没有帮助。我也提高了限制。 (2认同)