Autodesk Forge Data Management API搜索接口429请求过多问题咨询
按文件扩展名搜索的最佳实践
如果你的项目文件量级不大(低于1000个文件),优先选择调用data/v1/projects/:projectId/folders/:folderId/contents接口拉取指定文件夹下的全量文件列表,在本地根据扩展名做筛选,这个接口属于基础查询接口,限流阈值更高、响应速度稳定,波动极小。
如果必须使用搜索接口满足业务需求,建议缩小查询的目录范围,不要每次都从根目录发起全量搜索,同时尽量在请求参数中增加更多过滤条件减少服务端计算量,所有搜索请求串行发送,不要并发发起多个搜索请求。
未超出公开限流阈值仍触发429的原因
Autodesk官方公开的300次/分钟是全平台通用的基础限流阈值,搜索类接口因为需要服务端遍历索引、做匹配计算,资源消耗远高于普通查询接口,所以有独立的动态限流规则,会结合实时服务负载、请求的计算复杂度、同一客户端凭证下的高消耗接口请求频率做综合判定,哪怕总请求量远低于300次/分钟,短时间内连续发起多个重负载搜索请求,也会触发限流。如果你的客户端凭证是多应用共享的,其他应用的请求也会占用限流额度。
避免触发429的方案
- 20个文件的场景完全可以替换为拉取文件夹全量内容+本地过滤的方案,彻底规避搜索接口的限流问题
- 如果必须使用搜索接口,两次请求的间隔至少设置2秒以上,不要并发发送搜索请求
- 增加指数退避重试逻辑,收到429响应后依次等待1s、2s、4s再重试,最多重试3次
- 对相同条件的搜索结果做缓存,缓存有效期建议设置为5分钟以上,相同查询短时间内不要重复发起请求
429响应无Retry-after头的原因
这是Forge Data Management API搜索接口的已知实现问题,该接口的429响应目前确实不会返回Retry-after头部,不属于请求侧的问题,不要依赖该字段做重试逻辑,直接使用自定义的指数退避策略即可。
内容的提问来源于stack exchange,提问作者Eduard Sionov
相关产品推荐
相关产品推荐

