Google Drive API は共有サービスであるため、すべてのユーザーが公平に使用できるようにし、Google Workspace システムの全体的なパフォーマンスを保護するために、割り当てと制限が適用されます。
通知チャンネルを開く際に指定したアドレスに配信される通知は、割り当て上限にカウントされません。ただし、changes.watch
、channels.stop
、files.watch
の各メソッドの呼び出しは、割り当てを消費します。
割り当てを超過すると、403: User rate limit
exceeded
HTTP ステータス コードのレスポンスが返されます。Drive バックエンドでの追加のレート制限チェックでも、429: Too many
requests
レスポンスが生成されることがあります。この場合は、指数バックオフ アルゴリズムを使用して後で再試行する必要があります。以下の 1 分あたりの割り当て内であれば、1 日あたりのリクエスト数に制限はありません。
次の表に、クエリの上限を示します。
割り当て | |||||
---|---|---|---|---|---|
クエリ |
|
時間ベースの割り当てエラーを解決する
すべての時間ベースのエラー(X 分あたり最大 N 個のリクエスト)については、コードで例外をキャッチし、切り捨て型指数バックオフを使用して、デバイスで過剰な負荷が生成されないようにすることをおすすめします。
指数バックオフは、ネットワーク アプリケーションの標準的なエラー処理方法です。指数バックオフのアルゴリズムは、リクエスト間の待ち時間の間隔を最大バックオフ時間まで増加させながら、指数関数的にリクエストを再試行します。リクエストがまだ失敗する場合は、リクエストが成功するまで、リクエスト間の遅延を時間の経過とともに増やすことが重要です。
アルゴリズムの例
指数バックオフのアルゴリズムは、再試行の待ち時間の間隔を最大バックオフ時間まで増加させながら、指数関数的にリクエストを再試行します。例:
- Google Drive API にリクエストを送信します。
- リクエストが失敗した場合は、1 +
random_number_milliseconds
秒待ってからリクエストを再試行します。 - リクエストが失敗した場合は、2 +
random_number_milliseconds
秒待ってからリクエストを再試行します。 - リクエストが失敗した場合は、4 +
random_number_milliseconds
秒待ってからリクエストを再試行します。 - このようにして、最大
maximum_backoff
時間まで繰り返します。 - 再試行の最大回数まで待機と再試行を続行しますが、再試行の間の待ち時間は増加させません。
ここで
- 待機時間は
min(((2^n)+random_number_milliseconds), maximum_backoff)
で、n
は反復(リクエスト)のたびに 1 増加します。 random_number_milliseconds
は、1,000 ミリ秒以下の乱数です。これにより、ある状況で多くのクライアントが同期され、すべての再試行が同時に行われ、同期された Wave でリクエストを送信するケースを回避できます。random_number_milliseconds
の値は再試行リクエストの後に毎回再計算されます。- 通常、
maximum_backoff
は 32 秒または 64 秒です。適切な値はユースケースによって異なります。
クライアントは、maximum_backoff
時間に達した後も再試行を続行できます。この時点より後の再試行では、バックオフ時間を増加させ続ける必要はありません。たとえば、クライアントで 64 秒の maximum_backoff
時間が使用されている場合、この値に達した後は、クライアントは 64 秒ごとに再試行を繰り返します。無限に再試行することは、クライアントが、どこかの時点で止める必要があります。
適切な再試行間の待ち時間と再試行回数は、ユースケースとネットワークの状態により異なります。
料金
Google Drive API はすべて追加料金なしでご利用いただけます。割り当てリクエストの上限を超えても、追加料金は発生せず、アカウントに請求されることはありません。
割り当ての増加をリクエストする
プロジェクトのリソース使用状況に応じて、割り当ての増加をリクエストできます。サービス アカウントによる API 呼び出しは、単一のアカウントを使用しているとみなされます。追加割り当て申請が必ずしも認められるわけではありません。割り当て量が大きい場合は、承認に時間がかかることがあります。
割り当て量はすべてのプロジェクトで同じとは限りません。Google Cloud の使用量が多くなるに伴い、割り当てを増やす必要がある場合があります。使用量の大幅な増加が見込まれる場合は、事前に Google Cloud コンソールの [割り当て] ページから割り当ての調整をリクエストできます。
詳細については、次のリソースをご覧ください。