私たちの書き込みリクエスト率は 100 秒あたり 1 リクエストをほとんど超えていませんが、今朝からこのメソッドのすべてのリクエストでこの 429 エラーが発生し始めました。書き込みリクエストのレートは、午前 8 時から午前 5 時の間は 100 秒あたり 3 リクエストであり、それを超えることはありません (5 分ごとに 9 リクエスト)。1 か月で合計約 50,000 件のリクエスト。そのため、Google のデフォルトのクォータ制限にはほど遠いものです。何が欠けていますか?
レスポンスボディは
"error": {
"code": 429,
"message": "Resource has been exhausted (e.g. check quota).",
"errors": [
{
"message": "Resource has been exhausted (e.g. check quota).",
"domain": "global",
"reason": "rateLimitExceeded"
}
],
"status": "RESOURCE_EXHAUSTED"
}
ソース コードの関連部分は、コンソール コマンドを表す PHP クラス (の一部) です。
class UpdatePresentations extends CommandUsingDb
{
/** @var Google_Service_Slides */
private $slides;
/** @var Google_Service_Slides_Request[] */
private $requests = [];
private function updateChart(Google_Service_Slides_Presentation $presentation, OutputProvider $outputProvider, Site $site)
{
// refresh charts in slides
foreach ($presentation->getSlides() as $index => $slide) {
foreach ($slide->getPageElements() as $element) {
/** @var Google_Service_Slides_PageElement $element */
$chart = $element->getSheetsChart();
if ($chart instanceof Google_Service_Slides_SheetsChart) {
$this->requests[] = new Google_Service_Slides_Request([
'refreshSheetsChart' => [
'objectId' => $element->getObjectId(),
],
]);
}
}
}
}
private function flush(Google_Service_Slides_Presentation $presentation)
{
if (empty($this->requests)) return;
$batchUpdateRequest = new Google_Service_Slides_BatchUpdatePresentationRequest();
$batchUpdateRequest->setRequests($this->requests);
$this->slides->presentations->batchUpdate($presentation->presentationId, $batchUpdateRequest);
}
}