我们有一个很长的dag(约60个任务),我们经常看到这个dag的dagrun状态为failed
。在查看DAG中的任务时,它们都处于success
或null
状态(即,甚至尚未排队)。似乎dag已经过早地进入状态failed
。
在什么情况下会发生这种情况,以及人们应采取什么措施来防范呢?
如果它对上下文有帮助,我们使用Celery执行程序运行Airflow并且当前在1.9.0版上运行。如果我们将有问题的dag的状态设置回running
,那么所有任务(以及整个dag)都会成功完成。
答案 0 :(得分:1)
你能为这个dag发布你的args以及它的一些示例任务吗?
查看失败DAG的日志:
DAGs
DAG Runs
列。 null
或failed
。单击要调查的任务,然后在以下弹出窗口中单击View Log
。答案 1 :(得分:1)
DAG在没有任务失败的情况下失败的唯一方法是通过未连接到任何任务的东西。除了手动干预(检查团队中没有人手动使dag失败!)在考虑任务状态之外唯一使DAG失败的是超时检查器。
这在调度程序内部运行,同时考虑是否需要安排新的dag_run
。如果它发现另一个运行时间超过DAG的dagrun_timeout
参数的活动运行,那么它将被终止。据我所知,这并没有记录在任何地方,所以诊断这个的最好方法是查看DAG开始的时间和最后一个任务完成的时间,看它是否大致是长度为dagrun_timeout
。