Airflow DAG中schedule_interval=None与days_ago(3)组合用法疑问
关于Airflow中
schedule_interval=None与start_date=days_ago(3)组合的解释 首先明确两个参数的组合行为逻辑:
schedule_interval=None的核心作用是完全禁用DAG的自动调度,该DAG的所有运行只能通过手动触发、API调用或者其他外部触发方式启动,不会生成任何自动调度的任务,也不会自动执行回填操作。- 此处设置
start_date=airflow.utils.dates.days_ago(3)主要有以下几个作用:- 满足DAG注册的硬性要求:Airflow规定所有DAG必须配置合法的
start_date参数才能成功加载注册,否则会直接报错无法使用,很多仅需手动触发的DAG示例中会填写一个合理的过去日期,就是为了通过这个必填校验。 - 限制DAG运行的最早逻辑日期:不管是手动触发即时运行,还是手动指定日期做批量回填,生成的DAG运行实例的逻辑日期(execution_date)都不能早于配置的
start_date。如果设置为3天前,你无法手动触发逻辑日期早于3天前的任务,避免生成无效的历史运行记录。 - 无额外副作用:对于完全手动触发的DAG来说,只要
start_date设置为早于当前时间的合理值,就不会影响正常的手动触发操作,选3天前、1天前还是一周前,除了上述的回填日期限制外没有其他差异。
- 满足DAG注册的硬性要求:Airflow规定所有DAG必须配置合法的
补充你提到的schedule_interval='@daily'场景的小修正:如果配置为按天调度且start_date为3天前,DAG加载完成后会立刻生成过去3天的回填任务,同时后续每天到点生成新的调度任务,不需要等到次日才开始运行。
dag = DAG( dag_id="chapter9_aws_handwritten_digit_classifier", schedule_interval=None, start_date=airflow.utils.dates.days_ago(3), )
内容的提问来源于stack exchange,提问作者yrom1
相关产品推荐
相关产品推荐

