题目
服务重启、滚动发布或状态结构升级时,如何处理正在运行的任务?
答案
发布前让旧 Worker 停止领取新任务,在合理期限内完成当前步骤并保存进度。超过期限的任务由新 Worker 按租约和 Checkpoint 恢复。 任务记录应包含运行时、提示词、工具和状态 Schema 版本。新代码必须能读取仍在运行的旧状态,或者通过明确的迁移程序转换,不能默认所有任务都从最新格式开始。 涉及不兼容变更时,可让旧版本继续处理旧任务,新版本只接新任务;也可以在安全边界迁移。数据库变更采用兼容的扩展、迁移、收缩步骤,避免发布中途破坏旧 Worker。 工具的外部副作用仍通过幂等键和回执确认。升级失败回滚时,也要考虑已经写入的新状态能否被旧程序读取。先用包含在途任务的演练验证恢复流程。