我们有一个很长的dag(约60个任务),我们经常看到这个dag的dagrun处于 failed
状态 . 在查看DAG中的任务时,它们都处于 success
或 null
状态(即,甚至尚未排队) . 似乎dag已经过早地进入了状态 .
在什么情况下会发生这种情况,人们应该做些什么来防范呢?
如果's helpful for context we'使用Celery执行程序重新运行Airflow并且当前在1.9.0版上运行 . 如果我们将有问题的dag的状态设置回 running
,那么所有任务(以及整个dag)都会成功完成 .
2 回答
你能为这个dag发布你的args以及它的一些示例任务吗?
要查看失败的DAG的日志:
转到您的网络服务器,然后单击顶部栏上的
DAGs
找到失败的DAG,然后查看
DAG Runs
列 .单击红色失败的dag运行符号,将其加载到包含所有失败dag列表的页面中 .
选择要查看的失败DAG,然后选择超链接Dag Id
您现在处于失败的dag的图表视图中 . 查看不同的任务,看看是否有任何设置为
null
或failed
. 单击要调查的任务,然后在以下弹出窗口中单击View Log
.DAG在没有任务失败的情况下失败的唯一方法是通过未连接到任何任务的东西 . 除了手动干预(检查团队中没有人手动使dag失败!)在考虑任务状态之外唯一使DAG失败的是超时检查器 .
这在调度程序内部运行,同时考虑是否需要安排新的
dag_run
. 如果它找到另一个运行时间超过DAG的dagrun_timeout
参数的活动运行,那么它将被杀死 . 据我所知,这大概是dagrun_timeout
的长度 .你可以在这里看到代码:https://github.com/apache/incubator-airflow/blob/e9f3fdc52cb53f3ac3e9721e5128d17d1c5c418c/airflow/jobs.py#L800