2017-10-30 59 views

答えて

1

Microsoft Graphのクォータ制限の計算は非常に複雑です。たとえば、ユーザーのリストを返す単一のクエリでX個のリソースを取ることができます。バックグラウンドでは、AADがアプリケーションを表す複数の場所から情報を収集しているため、テナント内のアプリケーションの別のクエリ(ユーザーと同じ数のアプリケーションがあると仮定します)は2倍のリソースを消費する可能性があります。

これは単なる例ですが、Microsoft Graphなどのサービスから明確に定義された「クォータ」制限を簡単に取得する方法はありません。アクセスしているテナント(1Kユーザーテナント対100Kユーザーテナント)、アクセスしているAPI(OutlookはSharePointとは異なる調整動作をする可能性があります)などによって、クォータとスロットルの制限が多少動的に変更されることは言うまでもありません。

代わりに、このような制限に達すると返されるクリアエラーを処理し、提案されたタイムフレームとメソッドを使用してエンドポイントを再処理する機能をアプリケーションに組み込む必要があります。

このすべてはここに文書化されている:Microsoft Graph throttling guidance

スロットリングが発生した場合どうなりますか?

スロットリングが発生すると、マイクロソフトのグラフは、HTTPステータスコード429(あまりにも多くの要求を)返し、要求が失敗します。提案された待機時間が、失敗した要求の応答ヘッダーに返されます。あなたはエラー処理を実装する場合

を絞る処理する

ベストプラクティス、スロットルを検出するために、HTTPエラーコード429を使用します。失敗した応答には、応答ヘッダーのRetry-Afterフィールドが含まれます。 Retry-After遅延を使用して要求をバックアップするのは、クライアントが抑制されている間にMicrosoft Graphがリソースの使用状況を記録し続けるため、スロットルから回復する最速の方法です。

  1. [再試行後]フィールドで指定した秒数を待ちます。

  2. リクエストを再試行してください。

  3. 要求が429エラーコードで再び失敗すると、依然としてスロットルが行われています。推奨の再試行遅延を引き続き使用し、成功するまで 要求を再試行してください。

あなたもここで見てみる必要があります。Microsoft Throttling Pattern

関連する問題