0

servingLimitExceededバッチ全体ではなく、バッチ内の結果に対してエラー メッセージが表示されます。たとえば、このエラーで 100 件のレコードが返された後、さらに多くの結果が返されることがあります。すべてが 1 つのバッチ内にあります。

バッチが Google API によって内部的に処理される場合、レート制限に達しないように調整するにはどうすればよいですか? バッチ間に 1 秒の遅延を追加しようとしましたが、これは変わりません。Ruby クライアントも設定retries = 3しましたが、それが失敗したバッチを再試行することを意味するかどうかはわかりません。バックオフがこれを解決するはずなので、バッチ内の個々の API 呼び出しを再試行しているとは思いません。

失敗した結果を記録し、それらを個別に回復するために新しいバッチを作成する必要がありますか?

ちなみに、文書化されたクォータ制限エラーは紛らわしいものです。dailyLimitExceededとメッセージがありrateLimitExceededますが、これはそれらのいずれかを返しません。servingLimitExceeded「API に指定された全体的なレート制限にすでに達しています」という説明はあまり役に立ちませんが、これが到達したレート制限であると想定しています。

アップデート

コードを見ると、Ruby での再試行は送信エラーと認証(401) エラーgoogle-api-clientにのみ適用されることがわかります。403 (レート制限が返すもの)が発生し、とにかく再試行されません。ClientError

したがってretries、クライアント オブジェクトの設定はこれとは関係ありません。

バッチでこれに対処するためにできることはありますか?

4

1 に答える 1

1

ウェブマスター チームから、API は 20QPS に制限されており、現在のところこれ以上上げる方法はないという連絡を受けました。

推奨される解決策の 1 つは、より小さいバッチ リクエストを作成することです。

于 2015-05-11T21:40:39.420 に答える