我有一个运行的 Apache Airflow 托管环境,其中定义并启用了许多 DAG。一些 DAG 是按计划运行的,按 15 分钟的计划运行,而另一些则没有计划。所有的 DAG 都是单任务 DAG。DAG 的结构如下:
2 级 DAG ->(触发器)1 级 DAG ->(触发器)0 级 DAG
调度的 DAG 是 2 级 DAG,而 1 级和 0 级 DAG 是非调度的。0级DAG用于ECSOperator
调用预定义的弹性容器服务(ECS)任务,调用ECS任务中定义的Docker容器内的Python ETL脚本。2 级 DAG 等待 1 级 DAG 完成,然后依次等待 0 级 DAG 完成。ETL 脚本生成的完整 Python 日志在 ECS 任务运行的 CloudWatch 日志中可见,而 Airflow 任务日志仅显示高级日志记录。
计划 DAG(级别 2)中的单个任务已depends_on_past
设置False
为计划运行从发生。但是正在发生的事情是 Airflow 覆盖了这一点,我可以在 UI 中清楚地看到,特定级别 2 DAG 运行的失败正在阻止调度程序选择下一次运行 - 下一次调度运行状态被设置为None
,我必须手动清除失败的 DAG 运行状态,然后调度程序才能再次调度它。
为什么会这样?据我所知,没有 Airflow 配置选项应该覆盖2 级 DAG 任务中False
的任务级别设置。depends_on_past
任何指针将不胜感激。