跳到课程正文
EN
课程书架/自学公开课程

第 16 周 / 24 · 从学习到运行

中断之后

让运行能够恢复:持久状态、重试、幂等与备份

10 小时核心 + 2 小时机动学习 · 实验 · 独立练习
开始阅读 ↓
中断之后24 周个人 FDE 实践路线

本周要回答: 网络在中途断开、任务重复触发或进程突然重启,会不会造成重复动作和无法解释的状态?

进入本周前: 已有受控的手动只读运行时,能够定位一次请求和停止进程。

图 16.1本周的思考路径
  1. 01持久保存待运行
  2. 02获取执行权
  3. 03核查完成状态
  4. 04恢复或人工核查
课程示意图 · 根据本周实验步骤绘制,表示建议流程,不是实测结果。

学习内容与理解目标

本周学习任务状态机:待运行、运行中、成功、失败、等待人工处理与取消。将任务状态存到适合当前部署方式的持久存储,而不是假定进程内变量或临时磁盘能跨重启保留。副作用发生前后都有不确定窗口,重试不等于重新从头盲做一遍。

幂等是重复请求不产生额外不希望的效果,不是简单“生成一个 ID”就自动得到恰好一次执行。对不确定是否已成功的外部操作,应先核对目标系统状态,必要时交给人工。持久状态选修见 R49 · LangGraph JavaScript:Persistence;本地 SQLite 足够时无需为了学习引入复杂编排。

学习链接与选读范围

级别 官方或原始资料 本周只读这些 阅读预算
选读 R49 · LangGraph JavaScript:Persistence 状态保存、线程或运行标识、恢复的概念。 40 分钟
必读选段 R68 · Google SRE:Effective Troubleshooting 用假设和证据定位中断与重试问题。 35 分钟
路径 B 选读 R72 · Render:Cron Jobs 调度、运行限制和停止规则;不要假定支持持久磁盘。 35 分钟

实战拆解

  1. 为每次任务创建不含私人信息的运行标识,持久保存状态和最小必要结果。明确相同触发、重复输入与真正的新任务如何区分。

  2. 加入有限重试、退避、总超时与取消。只对适合重试的错误重试,格式错误或权限拒绝不应无限尝试;总预算覆盖所有重试。

  3. 用 mock 演练:处理中断、工具超时、重复触发、返回后未保存状态。检查重复请求不会生成重复草稿;无法确定状态时进入待人工核查。

  4. 确认托管文件系统的持久性与服务限制。使用定时任务时,状态要放在任务可安全访问的持久数据层;Render 的 cron 与磁盘能力分别核对 R72 · Render:Cron Jobs、R73 · Render:Persistent Disks。

  5. 制作一份合成数据备份,在新位置实际恢复,并核对记录数量与关键字段。确认恢复过程中不会自动重放外部动作。

交付与验收

本周交付 怎样确认真的完成
持久状态与去重 重启可找到运行状态,重复触发的行为有实际测试。
故障演练记录 涵盖超时、中断、重复与不确定完成状态。
可恢复备份 确实恢复过数据,说明恢复点、数据损失范围与限制。

不用代码生成器的练习: 自己制造一次同任务的并发触发,观察两次是否都获得执行权;解释为什么界面禁用按钮不能解决服务端并发问题。

隐私与安全检查: 备份和状态表同样需要权限与保留期限。日志避免记录完整模型上下文和凭据;只保留定位故障所需信息,参考 R61 · OWASP:Logging Cheat Sheet。停止新任务并不自动取消已经排队或已发送到外部系统的操作,应明确剩余风险。

落到日常生活: 允许一个只读公开资料任务按明确周期运行,先低频且有限次数。没有变化时跳过推理,失败时给一个可操作提示,而不是连续发送无意义通知。

过关或补课判断: 能恢复状态、去重和停止,且知道不确定结果如何处理后再尝试带审批的写入。一次成功运行不足以过关。

本周可复制的协作提示

请先为只读任务设计持久状态、去重、有限重试和取消。用 mock 演练中断与重复,不承诺恰好一次外部执行。确认临时与持久存储区别,并实际恢复一份合成备份。

本周来源与核对范围

来源编号与核对说明沿用课程原文,基线为 2026-09-27。未逐一登录完成外部实验;实施前请核对最新版本与访问条件。

  1. R49
    LangGraph JavaScript:Persistence ↗

    持久状态选修;已有简单实现可不引入框架。

  2. R61
    OWASP:Logging Cheat Sheet ↗

    选必要日志与敏感数据排除。

  3. R68
    Google SRE:Effective Troubleshooting ↗

    故障定位与假设验证。

  4. R72
    Render:Cron Jobs ↗

    定时运行选修;运行限制、计费及存储支持按当前文档确认。

  5. R73
    Render:Persistent Disks ↗

    持久盘不是所有服务类型均支持;不可把临时文件系统当数据库。