在我之前的question之后...我将Google Calendar API调用更改为batch,但是该批处理中的某些请求返回403-rateLimitExceeded“超出速率限制”错误。批次中最多有50个相同类型的请求,最常见的是PATCH。但是即使该批处理包含少于10个请求,也会发生错误。平均而言,所有请求中只有大约50%成功。
示例请求(带有一个请求的部分):
--googlebatch_20200513_171515_647
Content-Type: application/http
Content-ID: <item:0>
PATCH /calendar/v3/calendars/XXX/YYY
Content-Type: application/json
Content-Length: 449
{
"summary": "Opakovaná aktivita 2",
"description": "",
"id": "XXX",
"start": { "dateTime": "2020-05-07T09:00:00+02:00" },
"end": { "dateTime": "2020-05-07T09:30:00+02:00" },
"location": "",
"visibility": "default",
"reminders": {"useDefault": false},
"transparency": "opaque",
"extendedProperties": {
"private": {
"X-QIID": "29037717,10",
"X-QISyncOn": "1"
}
}
}
...
next requests
...
--googlebatch_20200513_171515_647--
示例响应:
--batch_preSx1sqdvk_AAP51GVWcoo
Content-Type: application/http
Content-ID: <response-item:0>
HTTP/1.1 403 Forbidden
Content-Type: application/json; charset=UTF-8
Date: Mon, 13 May 2020 15:15:16 GMT
Expires: Mon, 13 May 2020 15:15:16 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"
}
}
--batch_preSx1sqdvk_AAP51GVWcoo--
我不明白Google API为什么返回此错误,因为当我发送批处理请求时,我只是发送了批处理,而单个请求的执行则由Google本身控制。因此,我无法影响它们的发布速度。如果批处理执行速度太快,Google为什么不降低它的执行速度并成功完成所有请求?
我还能做什么?错误可能在哪里?您向我推荐什么?
谢谢。问候,彼得。
解决方法将使用impersonation,即使客户帐户代表用户操作。这样可以避免403错误。
请参见here以获取代码示例。