Shopify Admin API

并发写同一商品报 product 正在被修改

现象#

库存同步与人工改价同时进行,mutation 的 userErrors 返回 This product is currently being modified. Please try again later,code 是 TOO_MANY_PARALLEL_REQUESTS_FOR_THIS_PRODUCT。

原因#

  • 同一商品在极短窗口内被多个进程写入,服务端按商品加写锁,后来的请求被直接拒绝
  • 一次请求里对同一商品发多个别名 mutation,并发数超过该商品的写上限
  • 失败后立刻重试没有退避,锁还没释放就又撞上一次
  • 任务队列按批次而不是按商品 ID 分发,同一 SKU 落到不同 worker

处理步骤#

  1. 按 product.id 做哈希分片,保证同一商品只在一个 worker 上串行处理
  2. 捕获 TOO_MANY_PARALLEL_REQUESTS_FOR_THIS_PRODUCT 后退避重试三次
  3. 把同一商品的多个字段合并成一次 productUpdate,不要循环单字段提交
  4. 写入前读 updatedAt,与本地快照不一致就放弃本次覆盖
  5. 把冲突次数打点,持续偏高说明分片键选错或有人工并发编辑

验收标准#

压测时同一商品不再出现该 code,冲突请求退避后成功,最终价格与库存与源系统一致。

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