第六章的条件执行、重试与错误策略,有哪些疑问?
摘要:layout: default title: "第六章:条件执行、重试与错误策略" 第六章:条件执行、重试与错误策略 GeoPipeAgent 提供了强大的流程控制能力,包括条件执行(wh
第六章:条件执行、重试与错误策略
GeoPipeAgent 提供了强大的流程控制能力,包括条件执行(when)、自动重试(retry)和错误跳过(skip)。本章详细介绍这些机制的工作原理和最佳实践。
6.1 错误策略:on_error
on_error 字段控制步骤失败时的行为,可取三个值:fail(默认)、skip、retry。
6.1.1 on_error: fail(默认)
步骤失败时立即终止整个流水线,抛出 StepExecutionError。JSON 报告的 status 为 "error"。
- id: critical-step
use: vector.clip
params:
input: "$load-data"
clip: "$load-boundary"
on_error: fail # 裁剪失败则终止,不产生错误数据
适用场景:关键处理步骤,失败后继续执行会产生无意义的结果。
6.1.2 on_error: skip
步骤失败时跳过该步骤,步骤状态标记为 "skipped",输出设为空 StepResult(),流水线继续执行后续步骤。
- id: optional-simplify
use: vector.simplify
params:
input: "$load-data"
tolerance: 0.001
preserve_topology: true
on_error: skip # 简化失败时跳过,使用原始几何继续
注意:跳过步骤后,其输出为空 StepResult()。后续步骤若引用该步骤,需通过 when 条件判断,避免将空值传给下一个步骤。
适用场景:
可选的优化步骤(简化、平滑等)
某些数据可能不需要的处理步骤
非关键的输出步骤(如保存中间结果)
6.1.3 on_error: retry
步骤失败时自动重试,最多 3 次,每次重试前等待递增时间(0.5s、1s、1.5s)。若 3 次都失败,抛出 StepExecutionError。
- id: geocode-address
use: network.geocode
params:
address: "北京市海淀区清华大学"
on_error: retry # 网络请求超时时自动重试
重试日志示例:
WARNING: Step 'geocode-address' attempt 1/3 failed: Connection timeout — retrying...
WARNING: Step 'geocode-address' attempt 2/3 failed: Connection timeout — retrying...
INFO: Step 'geocode-address' (network.geocode) completed in 2.341s
适用场景:
网络请求步骤(地理编码、API 调用)
可能因资源争用而偶发失败的步骤
外部服务不稳定时的容错处理
6.2 条件执行:when
when 字段接受一个条件表达式字符串。当表达式求值为 True 时,步骤正常执行;为 False 时,步骤状态标记为 "skipped"。
