第六章的条件执行、重试与错误策略,有哪些疑问?

摘要: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"。
阅读全文