任务队列卡死两天:只设 pending/done 两状态的教训

Kodenstudio · reddit · 2026-10-14

作者分享了一个代价两天的工程教训:他的任务队列只有 pending 和 done 两个状态。一个 worker 在任务中途崩溃后,没有任何机制把该行状态翻转,下一个 worker 反复拾取同一个「毒任务」并再次崩溃,整个队列静默卡死,而仪表盘看起来一切正常,两天后才被发现。

修复方案很轻量:不再信任单一状态标志,改为给每个任务加租约(lease)——认领时打上 expiresat 时间戳,工作期间持续心跳(heartbeat),由一个简单的 reaper 进程定期把过期租约的任务回收回池子。

作者感慨:「花两小时就建好了,却花了两天才意识到需要它。」并在评论区询问大家是在状态列之上加租约,还是完全跳过状态机。

原文链接 →

「编程与Agent」频道最新

更多「编程与Agent」频道 AI 资讯 →