You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Airflow YAML DAG中正确配置retry_delay/retry_delay_sec

在Airflow YAML DAG中配置retry_delay的正确方式

在Airflow原生YAML DAG定义(2.3+版本支持)中,retry_delay参数必须使用ISO 8601时长格式的字符串配置,这是Airflow官方指定的序列化兼容格式——YAML无法直接解析Python的timedelta对象,因此必须用标准化的字符串格式替代。

正确格式规则与示例

ISO 8601时长格式的核心规则:

  • 以P作为周期前缀,T用于分隔日期与时间部分
  • 时间单位:S(秒)、M(分钟)、H(小时);日期单位:D(天)

常见配置示例:

  • 10秒重试延迟:retry_delay: "PT10S"
  • 5分钟重试延迟:retry_delay: "PT5M"
  • 1小时重试延迟:retry_delay: "PT1H"
  • 1天重试延迟:retry_delay: "P1D"(无需T,因为是日期周期)

完整YAML DAG示例

dag_id: sample_retry_dag
schedule_interval: "@hourly"
start_date: "2024-05-01"
catchup: false

tasks:
  failed_task:
    operator: airflow.operators.bash.BashOperator
    params:
      bash_command: "echo 'simulate failure' && exit 1"
    retries: 3
    retry_delay: "PT10M"  # 配置10分钟后重试

你之前的格式无效原因

  • 纯数字/字符串数字(如600、"600"):Airflow无法将其识别为时间间隔,必须明确时长格式
  • 自定义字符串(如"600s"):Airflow不支持这种非标准时长表示,仅认可ISO 8601格式
  • Python timedelta对象:YAML是静态配置文件,无法解析执行Python代码,必须使用序列化友好的字符串格式

内容的提问来源于stack exchange,提问作者Lucas Lino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 05:12:07