影刀RPA 采集异常的自愈机制:自动恢复的设计模式
影刀RPA 采集异常的自愈机制自动恢复的设计模式作者林焱什么情况用这个流程在半夜自动跑凌晨3点某一步失败了——网络抖动导致一个API调用超时。如果流程就这么停了天亮之前没人会重启它今天的任务就全耽误了。采集流程的自愈机制就是让流程在遇到可恢复的错误时不依赖人工干预自己判断、自己恢复、自己继续。这篇文章教你构建一套流程自愈的能力。怎么做店群矩阵自动化突破运营极限自愈决策树defhandle_error_with_self_healing(error,context):错误自愈决策# 第1层瞬时错误 → 重试ifisinstance(error,(TimeoutError,ConnectionError)):returnretry# 第2层环境问题 → 等待后重试ifisinstance(error,PermissionError):time.sleep(60)returnretry# 第3层资源问题 → 降级if磁盘空间不足instr(error):cleanup_old_files()returnretry# 第4层无法自愈 → 告警returnalert自愈状态机classSelfHealingRunner:自愈运行器defrun(self,steps):按步骤执行失败时尝试自愈forstep_name,step_funcinsteps:forattemptinrange(3):try:step_func()breakexceptExceptionase:actionhandle_error_with_self_healing(e,{})ifactionretryandattempt2:time.sleep(2**attempt)continueelifactionskip:print(f跳过{step_name})breakelse:raise# 无法自愈降级策略# 主数据源不可用 → 用缓存# API限流 → 降速# 服务器错误 → 切换到备用服务器FALLBACKS{primary_api:https://backup-api.example.com,primary_db:readonly_replica,}deftry_with_fallback(primary,fallback):try:returnprimary()except:iffallback:print(f主方案失败使用备选方案)returnfallback()raise有什么坑坑一自愈循环导致无限重试现象清理磁盘→重试→失败→清理磁盘→重试→… 永远跳不出来。解决每个自愈动作设置独立的重试上限超过上限跳出循环。坑二自愈操作本身制造了新问题temu店群自动化报活动案例现象自动清理了过期文件结果清掉了需要用到的历史数据。解决清理操作先移到临时目录确认重试成功后再真正删除。坑三没有记录自愈日志现象流程自动恢复了所有步骤都正常但你不知道发生过异常。解决每次自愈动作都记录日志什么时间、什么错误、做了什么恢复、结果如何。总结自愈不是让流程永不失败是让大部分可恢复的错误不需要人介入。重试 → 等待重试 → 降级 → 告警这四步覆盖了90%的异常场景。