跳转到内容

速率限制

RealityConnect API 按组织对请求进行速率限制,每个路由系列使用一个令牌桶。本页介绍这些桶、每个受速率限制的响应都会携带的标头,以及在遇到 429 Too Many Requests 时该怎么做。


每个桶都有一个容量(最大令牌数,即突发规模)和一个补充速率(每秒新增的令牌数,即持续吞吐量)。每个请求消耗一个令牌;当桶为空时,请求会被拒绝并返回 429

容量补充速率涵盖范围
assets100010/sRealityAsset、资产类型、资产类别、业务对象的创建/读取/列表/删除
twin100010/sTwin 空间、POI、区域、草稿
platform100010/s站点、数据节点、Data Bundle、插件
plan100010/sRealityPlan 空间、模型资产
library100010/sAsset Library 模型和标签
embed1002/sEmbed 会话签发
users100010/s用户、用户组、角色、邀请
sitefiles100010/s站点文件

速率限制按组织计算:代表同一组织行事的所有 OAuth 应用程序和用户,会共享每个系列的同一个桶。

每个受速率限制的响应,无论成功与否,都会携带以下标头:

标头含义
X-RateLimit-Limit该桶的容量
X-RateLimit-Remaining桶中剩余的令牌数
X-RateLimit-Reset距离桶再次填满的秒数
X-RateLimit-Policy{capacity};w={window},其中 window(秒)等于 capacity / refillRate

仅在 429 Too Many Requests 时,响应还会携带 Retry-After(距离至少有一个令牌可用的秒数)以及以下响应体:

{
"statusCode": 429,
"message": "Too Many Requests",
"error": "rate_limited"
}

请使用 Retry-After 来退避,而不是采用固定延迟或立即重试:对着空桶立即重试只会得到另一个 429。对于持续的高流量工作负载,请将请求节奏控制在桶的补充速率以下,而不是先突发到容量上限,再等待重置。

  • 参阅 API 参考,查看每个桶下的具体操作。