每日整理真实提问 356 个问题 · 726 个回答 需要系统性的技术文档?看 Shopify 技术百科 1000 篇 → 400-873-8117
已解决 提问于 1 个月前

接口频繁 429,重试策略该怎么写

2 个回答 1,673 次浏览 Admin API 与 GraphQL 最后活跃 1 个月前
56

夜间同步任务跑起来后大量 429,加了固定 1 秒重试反而更糟,任务跑不完。

镇
小镇提问者
Shopify Plus 架构顾问 · 跨境多市场
1 个月前提问 · 已收到 2 个回答

2 个回答

已采纳 · 提问者确认解决
73

先把判断放在前面:REST 按每秒请求数限流(标准店铺 2 req/s,Plus 更高),GraphQL 按成本限流,两者的重试节奏完全不同。

1处理顺序

  1. 读响应头 Retry-After 或 GraphQL 的 throttleStatus,按服务端给的时间等,不要写死。
  2. 重试用指数退避加抖动:1s、2s、4s、8s,上限 30s。
  3. 把并发降下来,多个 worker 共享同一个店铺的配额时会互相挤。
  4. 批量任务改用 Bulk Operations,避免逐条请求。
  5. 给任务加断点续跑,别让一次限流导致整批重来。
验收:同步任务在限流下仍能跑完,429 次数显著下降且无数据丢失。
风 风格技术团队 回答于 1 个月前
22

REST 的桶是「漏桶」,短时间突发会被打回;GraphQL 的桶是「按点恢复」,恢复速度约每秒 50 点。按这个节奏设计批量大小,比盲目重试有效。

泽 阿泽 · 前端工程师 · 1 个月前

你的处理方式是什么?

写下你实际验证过的步骤,比「我也有这个问题」有用得多。当前版本为静态展示,提交后会由团队整理并回复。

描述你遇到的现象、店铺环境(主题 / 套餐 / 应用)、已经试过哪些操作……
我要单独提问 工作日 10 分钟内回复,可直接加微信 fenggejishu