返回资讯中心
外部精选
软件工程
#开发者实时流

Ask HN 讨论:请求超时的购买快递面单任务该如何重试

来源标题:Ask HN: Would you retry this timed-out job?

Hacker News 上有人提问:调用供应商 API 购买快递面单的 POST 请求超时后,是否该重试。难点在于供应商不支持幂等键,重试可能重复购买面单,而查询接口较慢,超时后立即查往往返回未找到。提问者想了解生产环境中如何判断何时停止查询并重新购买,以及等待多久再下单。

Hacker News 最新realavdulmouhd2026/11/9 · 今天3 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

设想你的 worker 向供应商 API 发起 POST 请求购买物流面单,结果超时了。原因可能是供应商已经创建了面单并扣了款,也可能只是请求根本没送达。无论哪种情况,数据库都会显示这个任务已启动、未收到响应。标准做法是做成幂等。但假设供应商不接受幂等键。你在自己这边再怎么去重都没用,重试 POST 只会导致再买一张面单。查询接口也很慢,超时后立刻去查面单会返回 not found。我会把这个任务标记为未知状态,让另一个 worker 去查面单。如果仍然是未知,就带上订单 ID 和原始请求时间转给运维。问题在于,你的订单会卡在队列里等待。如果供应商那边下午出了故障,你就有大量烂摊子要手工处理。你们有人在生产环境遇到过这种情况吗?你们是怎么决定何时停止查询面单、转而重新购买的?重新购买前等了多久?当量足够大、让运维去核查已不可行时,这个做法有变化吗? 评论 URL:https://news.ycombinator.com/item?id=50422668 点数:1 评论数:0

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →