1

私たちの書き込みリクエスト率は 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);
   }
}
4

1 に答える 1