Shopify 应用与扩展

Shopify 应用调用 API 被限流怎么设计重试

现象#

批量同步时大量请求返回 429,日志里一片 Throttled,同步任务跑不完。

原因#

  • 并发太高,未按 leaky bucket 速率控制
  • 收到 429 后立即重试,加剧限流
  • 没有读取返回的 extensions.cost.throttleStatus
  • 用 REST 逐条拉取,成本远高于 GraphQL 批量

处理步骤#

  1. GraphQL 根据 throttleStatus.currentlyAvailable 与 restoreRate 动态 sleep
  2. 429 时指数退避(1s、2s、4s,加随机抖动),最多 5 次
  3. 大批量改用 Bulk Operation,一次导出/导入整批数据
  4. 把同步任务改为队列串行消费,控制并发为 1-2

验收标准#

批量任务在限流下仍能完成,429 比例显著下降,无数据丢失或重复写入。

本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。