我们如何在大规模下消除重复订单:来自 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 后端设计如何解决电子商务系统中的真实生产问题。