自动化长任务治理:租约、心跳、孤儿进程与安全回收

自动化长任务治理:租约、心跳、孤儿进程与安全回收

Trace、长稳态压测和批量工件导出可能运行数小时。控制端异常退出后,设备端采集器、端口转发和临时文件仍可能继续占用资源,最终导致后续任务失败甚至磁盘爆满。

一、不要把连接存活当作任务存活

网络连接可能短暂中断,控制端进程也可能重启。任务应拥有独立 job_id 和带期限的租约。执行端只有在租约有效时继续工作;心跳用于续租,而不是作为唯一身份。

二、租约状态

text 复制代码
created -> running -> renewing -> finishing -> completed
                    -> lease_expired -> recovering -> reclaimed

每次续租携带任务身份、执行代次和单调递增序列号,防止旧控制端恢复后覆盖新租约。

三、Fence Token

任务重派后,旧执行者可能仍在运行。为每次所有权分配递增的 fence token;写工件、更新状态和操作独占资源时验证 token。旧 token 即使重新联网,也不能继续提交结果。

四、孤儿资源清单

任务开始时登记进程、端口、临时目录、设备锁、采集会话和转发规则。回收器只处理登记在该任务名下的资源,不能按模糊进程名批量结束。

五、安全回收顺序

  1. 阻止任务产生新工作;
  2. 请求采集器正常结束并刷新缓冲;
  3. 校验已生成工件;
  4. 关闭进程、转发和设备锁;
  5. 删除已确认可删除的临时副本;
  6. 写入回收审计记录。

强制终止只作为超时后的降级动作。

六、临时文件保护

回收前解析并验证绝对路径必须位于任务工作根目录。完成上传且哈希一致的副本可以删除;未完成、损坏或仍需调查的现场进入短期隔离区,并设置容量上限和到期策略。

七、控制端恢复

控制端重启后查询执行端租约,而不是假设所有任务失败。对仍有效的任务恢复观察;对已过期任务启动回收;对状态冲突任务停止晋级并人工审核。

结语

长任务可靠性的关键不是永不掉线,而是失联后仍能明确所有权、保护有效工件并安全释放资源。租约、Fence Token 和资源登记表共同消除最危险的孤儿任务。

相关推荐
用户956256254296 小时前
五分钟用 E2B SDK 打通沙箱:环境变量只改三行
python·api
用户95179422510297 小时前
最小循环:让 Agent 跑起来(I1)
python·agent
沉默小管7 小时前
上班鼓励器_桌宠版
python
SomeOtherTime7 小时前
Rust 面向对象介绍(AI回答)
开发语言·python·rust
duansamve7 小时前
Flask中视图函数接收请求数据和返回响应实例
python·flask
用户298698530148 小时前
用 Python 自动化把 JavaScript 代码转换为 Word 文档
javascript·python·api
用户019027581618 小时前
AlphaFeed 标的池(universes)全解:CN_Stock / CN_ETF 与权限边界
python
青少儿编程课堂8 小时前
蓝桥杯青少组图形化 + 全国青少年信息素养大赛 + 电子学会Scratch考级:校园连连看解析
c++·python·算法·bfs·信息学竞赛
用户0332126663679 小时前
如何使用 Python 将 JSON 转换为 Excel
python·excel
小小张说故事9 小时前
Python 的切片到底切了什么:拆开 slice 对象、负步长和 __getitem__
python