我们如何在大规模下消除重复订单:来自 EyecareWell 的 Python 事后分析

发布: (2026年1月19日 GMT+8 01:06)
2 min read
原文: Dev.to

Source: Dev.to

引言 — 生产事故

EyecareWell 在运营一个基于 Shopify 的电子商务平台以及一个 Windows 蓝光过滤应用。随着每日订单量的增加,出现了生产事故:重复的 webhook 执行导致订单重复和库存漂移。

事件概要

  • 订单重复创建
  • 系统之间库存不匹配
  • 来自 Shopify 的 webhook 重复重试

根本原因分析

webhook 端点是同步且非幂等的。当响应超过超时阈值时,Shopify 会重试事件,导致竞争条件和重复写入。

之前的架构

  • 基于 Flask 的 webhook 端点
  • 直接写入数据库
  • 无后台处理
  • 无去重

之后的架构

  • FastAPI 异步端点
  • 基于 Redis 的幂等性
  • Celery 后台工作者
  • 立即的 HTTP 确认

关键 Python 实现

if redis.exists(event_id):
    return {"status": "duplicate"}
redis.set(event_id, "processing", ex=3600)

可观测性改进

  • 结构化日志
  • 重试指标
  • 错误告警

结果

  • 修复后零重复订单
  • webhook 延迟降低 70 %
  • 库存对账稳定

教训

  • 始终假设 webhook 会重试
  • 幂等性是必不可少的
  • 异步处理提升可靠性

为什么这很重要

该架构使 EyecareWell 能够安全扩展,同时保持对健康相关产品的信任。

结论

本案例展示了严谨的 Python 后端设计如何解决电子商务系统中的真实生产问题。

Back to Blog

相关文章

阅读更多 »