主页文档代码示例API 参考公告模型发行说明常见问题GitHub视频
开发者中心API 状态支持
文档
开发者中心API 状态支持

优化应用程序工作负载的速率限制

管理 API 限制并优化应用程序内的 SP-API 使用情况。

在设计销售合作伙伴 API (SP-API) 应用程序时,必须考虑每个 API 的资源速率限制。销售合作伙伴 API 为每个销售合作伙伴维持每个 API 的资源配额,以保持可用性并防止单个 API 过载。

如果您超过这些速率限制,SP-API 将返回 429 Too Many Requests 出错并限制通话。过度的 API 限制会导致作业失败、延迟和运营效率低下,最终会耗费您的组织时间和金钱。如果您收到这些错误响应,则可以按照符合速率限制的方式重新提交失败的请求。

本指南概述了以下策略,可帮助您有效地管理 API 限制并优化 SP-API 应用程序的性能和可靠性:

有关 SP-API 集成的各个方面的最佳实践的全面指导,请参阅 SP-API 架构完善的指南播放列表 在亚马逊 SP-API 开发者大学频道上。

检查并遵守速率限制

查看以下有关如何检查和遵守速率限制的指南。

查看速率限制

查看文档中每个 SP-API 操作的使用计划。要了解如何查找使用计划,请参阅 如何找到你的使用计划

将记录的限制与 API 响应的速率限制标头进行比较。响应标头可用于 HTTP 状态码 20x、400 和 404。为避免节流,请将您的应用程序设计为保持在这些限制之内。

要详细了解使用计划以及 SP-API 速率限制算法的工作原理,请参阅 使用计划和速率限制

设置错误监控和警报系统

为了遵守 API 速率限制,建立一个有效的系统来监控错误并在出现错误时发出警报至关重要。此过程通常涉及以下步骤:

  1. 记录 API 响应:捕获和存储完整的 API 响应数据,包括状态代码、标头和错误消息,以便对错误进行分析和分类。
  2. 对错误进行分类:根据 HTTP 状态代码将记录的错误整理到相关的存储桶中。例如,您可以将 400 级客户端错误分为以下几类:400 个无效输入、403 个身份验证问题、404 个资源未找到、429 个速率限制违规等。
  3. 创建错误仪表板:在集中式仪表板上可视化每个 API 操作的错误率和错误类型,以快速识别问题区域。
  4. 设置警报阈值:为每种错误类型定义适当的阈值,并设置警报,以便在错误率超过这些阈值时主动通知您。

如果您使用 AWS 服务,则可以通过以下方式实施此最佳实践 亚马逊云观察:

  • 云观察日志:捕获并存储详细的 API 响应数据。
  • CloudWatch 指标过滤器:创建自定义指标,根据状态代码计算不同的错误类型。
  • 云监视警报: 监控错误指标和触发通知(例如, 亚马逊简单通知服务) 当突破阈值时。

避开拥挤的交通

在不同时间段内均匀分配 API 请求,以避免对特定操作进行集中调用,然后再进行最少的活动。这些不均匀的峰值会导致额外的 429 个错误,您可以通过逐渐分散流量来避免这些错误。

您可以实现速率限制器来管理大量流量,并根据每个 API 的资源限制每秒允许 N 个请求。速率限制器可确保调用模式在一段时间内保持一致,以缓解流量峰值并促进统一使用 API。使用每个 API 的速率限制作为速率限制器中每个 API 的指导方针。

有关使用以下内容的分步代码示例 销售合作伙伴 API 身份验证/授权库 要实现速率限制器,请参阅以下示例代码。

实施重试和退避技术

主动实施以下技术,以避免影响您的工作负载并提高应用程序的可靠性:

  • 重试:实现自动重试逻辑。您可以通过在请求之间添加一小段延迟和排队来配置重试设置。
  • 指数回退:使用指数退避算法可以更好地控制流量,连续错误响应的重试间隔时间会逐渐延长。指数退避可能导致非常长的退避时间,因为指数函数增长迅速。实现最大延迟间隔和最大重试次数,您可以根据操作和其他局部因素进行调整。
  • 抖动:如果所有客户端同时重试,则重试可能无效。要避免此问题,请使用抖动,这是在发出或重试请求之前的随机时间,通过分散到达率来帮助防止大规模爆发。大多数指数退避算法使用抖动来防止连续碰撞。有关更多信息,请参阅 指数退避和抖动

减少 API 请求的数量

以下部分介绍如何使用基于事件的工作负载、批量操作和批量操作来减少 API 请求的数量。

基于事件的工作负载

使用监控通知 用于通知的销售合作伙伴 API 并根据特定条件执行操作。使用销售合作伙伴通知API,您可以创建接收通知、订阅通知、删除通知订阅等目的地。当事件调用您订阅的通知时,您的应用程序可以直接从亚马逊接收信息,而不是轮询信息。

有很多 通知类型 可供您的应用程序利用。有关更多信息,请参阅 通知 API v1 用例指南

批量操作

在单个请求中获取一批物品的数据。SP-API 支持一组批量操作,这些操作与逐一调用执行相同的操作,但一次只能处理一批请求。您可以在单个 API 调用中发送适用数量的请求(主要是 20 个),而不是逐个调用。

SP-API 目前支持以下用例的批量操作:

  • 使用目录 API 搜索商品
  • 获取报价或定价信息
  • 获取产品的费用估算

批量操作

您可以在单个 API 请求中上传和下载批量数据。

要批量上传数据,您可以使用 Feeds API。Feeds 适用于各种用例,例如创建清单、管理库存和价格、确认订单等。有关可用饲料类型的列表,请参阅 上传数据类型值

要批量下载数据,可以使用 报告 API 或者 数据亭 API。报告 API 为各种用例提供报告,包括监控库存、追踪配送订单、获取税务信息、追踪退货和卖家绩效、通过亚马逊物流管理销售业务等。有关报告 API 操作以及相关的数据类型和架构的详细信息,请参阅 报告 API 参考。有关可用的报告类型,请参阅 报告类型值

数据亭 API 支持 GraphQL 查询操作,以实现动态报告功能。GraphQL 是一种 API 查询语言,使您能够在单个请求中请求和接收所需的数据。Data Kiosk 基于 GraphQL 的动态报告套件可帮助您生成自定义 GraphQL 查询,以访问来自亚马逊数据集的批量数据。有关详细信息,请参阅 数据亭 Schema Explorer 用户指南

其他最佳实践

请记住以下其他最佳实践:

  • 监控您的使用情况,并随着应用程序的增长相应地进行扩展。
  • 优化您的代码以消除不必要的 API 调用。
  • 缓存常用的数据,以减少重复的 API 请求的需求。您可以使用对象级存储在服务器上缓存数据,例如 亚马逊 S3。您也可以将相对静态的信息保存在数据库中或将其序列化到文件中。
  • 在队列中错开 SP-API 请求,并在等待下一个已排队的作业运行的同时执行其他处理中的任务。

此页面对您有帮助吗?