羽梦羽笔记MENGYU NOTES
笔记/自动化
自动化

重复运行一次,会发生什么?

用唯一标识、状态记录和结果检查,理解自动化里的重复执行问题。

自动化任务中断后,再运行一遍,是很常见的操作。但如果流程包含新增记录、发送通知或生成文件,第二次运行可能产生重复结果。设计流程时,应该提前回答“这一步是否已经做过”。

为任务找到稳定的标识

可以使用来源系统的记录编号,或者由业务上稳定的字段组合成键。文件名或执行时间不一定足够可靠:同一份内容可能换一个文件名,而不同任务也可能同时发生。

区分准备、处理中和完成

只保存一条“成功”日志,并不能解决所有问题。更清楚的做法,是保存任务标识和当前状态,在操作前检查是否已有完成结果,在操作后核对结果并更新状态。

读取任务 → 检查标识
          ├─ 已完成:核对结果后跳过
          ├─ 处理中:检查上次执行的实际状态
          └─ 未开始:执行操作 → 校验结果 → 记录完成

超时是最容易误判的地方

请求没有及时返回,可能是操作没有执行,也可能是操作已完成但响应丢失。应优先查询结果状态。若外部系统提供幂等键或唯一约束,应结合其具体规则使用,而不是仅靠本地的“执行过”标记。

单机记录也有局限

两个实例同时运行时,都可能读到“未开始”。仅用一个普通文件记录状态,无法自动解决并发竞争。此时需要数据库约束、事务或锁等适合环境的协调机制。

理解重复执行,不要求一开始就搭建复杂系统。先列出有副作用的步骤,再逐个确定如何识别、检查和恢复,流程就会更清楚。

✳

记录方法,也保留问题。
本文属于「自动化」专题。

继续阅读专题 →
← 全部笔记下一篇:读完一篇技术文章之后,留下什么? →

搜索覆盖文章正文 · Esc 关闭