Airflow自定义DAG不显示且无法运行的问题求助
Airflow自定义DAG无法加载问题解决
问题现象
运行自定义Airflow DAG后出现以下问题:
- 刷新UI后仅显示默认管理员DAG,自定义DAG未出现
- 执行
airflow dags list命令也无法查询到该DAG
预配置
为名为extract_load的文件夹创建了Python 3.11.6版本的虚拟环境(venv)
安装步骤
- 激活
extract_load文件夹下的虚拟环境 - 执行
export AIRFLOW_HOME=~/airflow设置环境变量 - 执行
pip install "apache-airflow[celery]==2.7.3" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.7.3/constraints-3.11.txt"安装Airflow - 执行
airflow standalone启动Airflow - 使用
airflow standalone生成的账号密码登录localhost:8080
自定义DAG脚本
脚本位于extract_load文件夹下,内容如下:
#%% from airflow import DAG from airflow.operators.python_operator import PythonOperator import datetime as dt from datetime import datetime, timedelta from dateutil.relativedelta import relativedelta #%% today = datetime.now().strftime("%Y-%m-%d") default_args = { "owner": "example", "email": ["example@gmail.com"], "email_on_failure": True, "retries": 2, "retry_delay": timedelta(minutes=10), "start_date": datetime(2023,12,14) } dag = DAG( dag_id = 'load_test', schedule_interval = None, default_args = default_args, ) def test(): hello = print('Hello') return hello test_run= PythonOperator( task_id='hello_test', python_callable=test, dag=dag, ) test_run
排查与解决步骤
修正DAG文件存放路径
Airflow默认从$AIRFLOW_HOME/dags目录加载DAG文件,你的脚本放在extract_load文件夹下,Airflow无法识别。两种解决方式:- 直接将DAG脚本移动到
~/airflow/dags目录 - 设置环境变量指定自定义路径,执行
export AIRFLOW__CORE__DAGS_FOLDER=/绝对路径/extract_load后重启Airflow服务
- 直接将DAG脚本移动到
检查文件命名与权限
- 确保DAG脚本以
.py结尾,且文件名不以_开头(Airflow会忽略这类文件) - 检查
extract_load文件夹及脚本的权限,确保Airflow进程拥有读取权限
验证DAG有效性
用Airflow自带命令检查DAG解析情况:# 检查是否有导入错误 airflow dags list-import-errors # 测试DAG运行 airflow dags test load_test 2023-12-14另外脚本中
hello = print('Hello')可简化为直接print('Hello'),print本身返回None,不影响加载但更规范。确认Airflow配置
打开$AIRFLOW_HOME/airflow.cfg,查看dags_folder配置项,确认其指向的路径与你存放DAG的位置一致,不一致则手动修改后重启服务。
内容的提问来源于stack exchange,提问作者Hicham G
相关产品推荐
相关产品推荐

