Airflow UI无法显示最新DAG运行记录的问题咨询
Airflow UI延迟展示最新DAG运行记录问题
现象描述
- 所有DAG的最新运行记录,需等下次DAG运行完成后才会在UI中显示,但已确认该次运行实际已正常执行完毕。
- 实例:UI显示最后一次运行时间为8:58,实际最后一次运行在8:59,该记录要等下一轮DAG运行结束后,才会出现在DAG列表页及Tree view中。
- 截图验证:8:58之后有4个任务完成,其中2个完成时间在8:59之后,说明最新运行记录未及时展示。
关联DAG代码
import sys import os from airflow.models import BaseOperator import datetime import cx_Oracle from airflow.operators.python import PythonOperator from airflow.providers.oracle.operators.oracle import OracleOperator from airflow import DAG from airflow.operators.bash import BashOperator from airflow.utils.dates import days_ago from airflow.providers.microsoft.mssql.operators.mssql import MsSqlOperator default_args = { 'owner': 'airflow', 'depends_on_past': True, 'trigger_rule': 'all_success', 'start_date': datetime.datetime(2023, 5, 25) } def script1(): connection = cx_Oracle.connect('Username', 'Password', 'Link') cur = connection.cursor() def script2(): connection_ibm = cx_Oracle.connect('Username', 'Password', 'Link') cur_ibm = connection_ibm.cursor() with DAG( dag_id='Check_days', schedule_interval='* 5 * * 2,4,6', catchup = False, default_args = default_args ) as dag: t1 = PythonOperator( task_id = 'script1', depends_on_past = True, python_callable = script1, dag = dag ) t2 = PythonOperator( task_id = 'script2', depends_on_past = True, python_callable = script2, dag = dag ) t1>>t2
解决方案
1. 验证元数据库同步状态
Airflow UI数据来自元数据库,先确认最新运行记录是否已写入数据库:
- 执行SQL查询
dag_run表:SELECT execution_date, state FROM dag_run WHERE dag_id = 'Check_days' ORDER BY execution_date DESC LIMIT 5; - 若数据库已有记录但UI未显示,重启Webserver强制刷新:
airflow webserver restart
2. 排查depends_on_past配置影响
DAG及任务均设置depends_on_past: True,该配置要求当前任务需等上一周期任务成功后才能执行,若上一周期任务状态异常,可能导致当前运行状态更新延迟:
- 检查历史任务实例是否存在
failed、up_for_retry等异常状态; - 临时将
depends_on_past改为False,测试是否仍存在延迟,排除该配置干扰。
3. 检查调度器与执行器性能
- 查看调度器日志,排查是否有任务排队、数据库连接池不足等问题:
tail -f $AIRFLOW_HOME/logs/scheduler/latest.log - 若使用CeleryExecutor,检查Worker状态是否正常、是否有任务堆积:
airflow celery status
4. 调整UI刷新频率
Airflow UI默认自动刷新间隔为30秒,可手动点击页面右上角刷新按钮,或修改airflow.cfg中的webserver.refresh_interval参数缩短间隔。
内容的提问来源于stack exchange,提问作者Ilya Velichko
相关产品推荐
相关产品推荐

