レート制限
RealityConnect APIは、ルートファミリーごとのトークンバケットを使用して、組織単位でリクエストのレート制限を行います。このページでは、バケット、レート制限対象のレスポンスすべてに含まれるヘッダー、429 Too Many Requestsが発生した場合の対処法について説明します。
各バケットには容量(最大トークン数、つまりバーストサイズ)と補充レート(1秒あたりに追加されるトークン数、つまり持続スループット)があります。リクエストは1トークンを消費し、バケットが空になると、リクエストは429で拒否されます。
| バケット | 容量 | 補充レート | 対象 |
|---|---|---|---|
assets | 1000 | 10/s | RealityAsset、アセットタイプ、アセットカテゴリ、ビジネスオブジェクトの作成/読み取り/一覧/削除 |
twin | 1000 | 10/s | ツインスペース、POI、ゾーン、ドラフト |
platform | 1000 | 10/s | サイト、データノード、データバンドル、プラグイン |
plan | 1000 | 10/s | リアリティプランスペース、モデルアセット |
library | 1000 | 10/s | アセットライブラリのモデルとタグ |
embed | 100 | 2/s | 埋め込みセッションの発行 |
users | 1000 | 10/s | ユーザー、グループ、ロール、招待 |
sitefiles | 1000 | 10/s | サイトファイル |
レート制限は組織単位で行われます。同じ組織を代理して動作するすべてのOAuthアプリケーションとユーザーは、ファミリーごとに1つのバケットを共有します。
レスポンスヘッダー
Section titled “レスポンスヘッダー”レート制限対象のレスポンスには、成功時・エラー時を問わず、以下のヘッダーが含まれます。
| ヘッダー | 意味 |
|---|---|
X-RateLimit-Limit | バケットの容量 |
X-RateLimit-Remaining | バケットに残っているトークン数 |
X-RateLimit-Reset | バケットが再び満杯になるまでの秒数 |
X-RateLimit-Policy | {capacity};w={window}。window(秒)はcapacity / refillRateです |
429 Too Many Requestsの場合のみ、レスポンスにはRetry-After(少なくとも1つのトークンが利用可能になるまでの秒数)と、以下のボディも含まれます。
{ "statusCode": 429, "message": "Too Many Requests", "error": "rate_limited"}429への対処
Section titled “429への対処”固定の遅延や即座の再試行ではなく、Retry-Afterを使ってバックオフしてください。空のバケットに対して即座に再試行しても、別の429が返されるだけです。持続的な高負荷のワークロードでは、容量までバーストしてリセットを待つのではなく、バケットの補充レートを下回るペースでリクエストを行ってください。
次のステップ
Section titled “次のステップ”- 各バケットに含まれる正確な操作については、APIリファレンスを参照してください。