Airflow 回填 DAG 运行时,第一个任务排队等待(灰色)状态导致运行无法继续。

3

我尝试在stackoverflow上查看类似的答案来解决问题,但我的情况略有不同。

我正在使用Airflow CLI执行回溯作业,回溯dag运行状态一直卡在运行中,而dag中的第一个任务处于排队(灰色)状态。

调度程序似乎永远不会启动第一个任务。

我没有将depends_on_past=True设置为dag_defaults。

dag_defaults = {
    "start_date": datetime.today() - timedelta(days=2),
    "on_failure_callback": on_failure_callback,
    "provide_context": True
}

我被迫手动运行每个任务。 :( 而不是让调度程序按其课程自动运行它们。

注意: 我正在通过K8S集群上的Airflow工作器Pod执行backfill cli命令。

有没有其他人在使用backfill cli命令时遇到类似的问题?

更新: 我意识到我的backfill运行超出了总dag间隔。即在dag start_date之前导致阻塞的计划依赖关系。

Task Instance Details

虽然您仍然可以创建运行,但它不会自动运行,但您可以手动运行每个任务。

作为解决方法,需要将start_date更改为在我的最旧回填日期之前或之前。

如果存在一种方法可以覆盖backfill cmd或提供一个--force选项,该选项可以为该特定dag_run模拟start_date,而不是绑定到总间隔,则很好。


1
你可以点击任务,选择“任务实例详细信息”,然后检查“依赖项”和“原因”部分吗?这应该会指引你往正确的方向。 - Nadim Younes
@NadimYounes,谢谢你帮我验证了我的问题。 我正在运行的回溯作业超出了dag start_date(间隔),似乎只有在间隔内时,回溯才会自动调度,但在该间隔之外时允许您手动运行。Airflow文档: 回溯命令将重新运行dag_id的所有实例,在开始日期和结束日期内的所有间隔内。 - Rogan88
很高兴能帮到你,祝你好运 @Rogan88 - Nadim Younes
谢谢,我已经更新了问题。 - Rogan88
1个回答

1

更新:我意识到我的回填运行超出了总的dag间隔。也就是在dag的start_date之前,导致了阻塞的调度依赖关系。

虽然您仍然可以创建运行,但它不会自动运行,但您可以手动运行每个任务。

作为解决方法,需要将 start_date 更改为早于或等于最早的回填日期。

如果有一种方式可以覆盖回填命令或提供一个 --force 选项,以便为该特定dag_run模拟 start_date,而不是绑定到总间隔,那将是很好的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接