已超出Google日历的API速率限制(即使它没有)

时间:2018-01-08 08:44:36

标签: google-app-engine google-api google-calendar-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"
 }
}

如果我查看Api仪表板,限制非常高:

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

如何克服此错误?我希望此任务完成,以便用户在日历中查看事件。

2 个答案:

答案 0 :(得分:0)

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个字符。

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

答案 1 :(得分:0)

我也找不到这个问题的答案。默认值为每100秒500个请求,即使我将其增加,一段时间后,我也只能每秒发送5个请求,限制为500。

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