Shopify 应用调用 API 被限流怎么设计重试
现象#
批量同步时大量请求返回 429,日志里一片 Throttled,同步任务跑不完。
原因#
- 并发太高,未按 leaky bucket 速率控制
- 收到 429 后立即重试,加剧限流
- 没有读取返回的
extensions.cost.throttleStatus - 用 REST 逐条拉取,成本远高于 GraphQL 批量
处理步骤#
- GraphQL 根据
throttleStatus.currentlyAvailable与restoreRate动态 sleep - 429 时指数退避(1s、2s、4s,加随机抖动),最多 5 次
- 大批量改用 Bulk Operation,一次导出/导入整批数据
- 把同步任务改为队列串行消费,控制并发为 1-2
验收标准#
批量任务在限流下仍能完成,429 比例显著下降,无数据丢失或重复写入。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。