Google Drive API请求限制



我请求支持或特殊知识。

在我的应用程序中,我使用谷歌硬盘,需要插入/删除1000多个文件的权限。Google API不允许我在一个请求中设置多个文件的权限,因此我需要进行1000+个请求(或将其打包为批或几个批)。

我的请求如下:

POST /drive/v2/files/0B18tlN6SgYRaUzl1MUlnNHlGSEE/permissions?sendNotificationEmails=false&quotaUser=00787465305247954313&alt=json

但当我试图向Google Drive API发出批量请求时,我得到了大量错误响应的批量响应。批处理中的第一个响应很少是可以的,但不是全部。

大多数错误的响应看起来是这样的:

Content-Type: application/http
Content-ID: <response-280781395>
HTTP/1.1 403 Forbidden
Content-Type: application/json; charset=UTF-8
Date: Tue, 09 Sep 2014 11:45:03 GMT
Expires: Tue, 09 Sep 2014 11:45:03 GMT
Cache-Control: private, max-age=0
Content-Length: 199
{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "rateLimitExceeded",
    "message": "Rate Limit Exceeded"
   }
  ],
  "code": 403,
  "message": "Rate Limit Exceeded"
 }
}

其中一些看起来像这样:

HTTP/1.1 500 Internal Server Error
Content-Type: application/json; charset=UTF-8
Date: Tue, 09 Sep 2014 11:45:03 GMT
Expires: Tue, 09 Sep 2014 11:45:03 GMT
Cache-Control: private, max-age=0
Content-Length: 180
{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "internalError",
    "message": "Internal Error"
   }
  ],
  "code": 500,
  "message": "Internal Error"
 }
}

批次中的最后几个响应如下所示:

Content-Type: application/http
Content-ID: <response-901482964>
HTTP/1.1 400 Bad Request
Content-Type: application/json; charset=UTF-8
Date: Tue, 09 Sep 2014 11:45:03 GMT
Expires: Tue, 09 Sep 2014 11:45:03 GMT
Cache-Control: private, max-age=0
Content-Length: 171
{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "badRequest",
    "message": "Bad Request"
   }
  ],
  "code": 400,
  "message": "Bad Request"
 }
}

奇怪的是,当我收到配额限制错误,并决定在谷歌硬盘控制台中增加请求/用户/秒配额时。它被设置为10000/用户/秒。但我只批量发送了1000请求,但已经收到"403超过速率限制"错误。然后我开始得到"500内部错误"错误。

然后我发现我应该将"quotaUser"参数设置为request,但没有任何更改。我仍然会犯这种错误。

对Google Drive Web UI的调查向我展示了如果Google Drive决定共享1000多个文件,它是如何设置文件权限的。在共享我的所有文件之前,它会提示我大约20-30分钟。在"活动"面板中,我看到文件以束的形式共享。有时这些束是1个文件大小,有时是40个文件大小。但所有文件最终都被共享了,看起来谷歌硬盘团队使用了类似重试队列的东西,或者只是没有为自己的请求设置配额。

主要问题是:

  • 为什么我仍然会收到这些配额错误(指定为10000谷歌云控制台中的请求/用户/秒限制)以及如何避免他们
  • 为什么Google Drive API返回"500内部错误"one_answers"400错误请求"错误
  • 有什么解决办法吗

附言:我有兴趣帮助谷歌驱动团队,我可以提供完整的跟踪和代码样本。

虽然您可以设置每个用户的QPS来防止恶意用户消耗您的配额,但将其设置为任意高的数字并不意味着您可以发出那么多请求。每个应用程序也有QPS限制。默认值远低于1000qps。

如果您需要额外的配额,请通过开发人员控制台请求。

相关内容

  • 没有找到相关文章

最新更新