本地Airflow无法检测课程项目DAG文件的问题求助
问题描述
- 本地部署Airflow,为课程项目编写的新DAG文件无法被
airflow dags list命令或Web UI检测到 - DAG基于官方示例
example_python_operator.py编写,已完成管理员用户创建,执行过export AIRFLOW_HOME=~/airflow,DAG文件直接放置在~/airflow目录下 - DAG代码:
import logging import shutil import time from datetime import datetime from pprint import pprint from airflow import DAG from airflow.decorators import task log = logging.getLogger(__name__) with DAG( dag_id='download_publications_data_dag', schedule_interval=None, start_date=datetime(2021, 1, 1), catchup=False, tags=['example_dag'], ) as dag: pass
- 替换为原示例代码仍无效,已通过
ps aux | grep airflow和lsof -i 0.0.0.0:8080终止所有Airflow进程 - 验证
python3 download_publications_data_dag.py无报错,已降级至Python3.9并重新安装Airflow,问题依旧,怀疑与conda环境有关
解决方案
- 修正DAG存放路径:Airflow默认从
$AIRFLOW_HOME/dags子目录加载DAG文件,直接放在~/airflow根目录不会被识别。执行以下命令调整:mkdir -p ~/airflow/dags mv ~/airflow/download_publications_data_dag.py ~/airflow/dags/ - 确认AIRFLOW_HOME配置有效性:
- 执行
echo $AIRFLOW_HOME,确认输出为~/airflow - 打开
$AIRFLOW_HOME/airflow.cfg,检查dags_folder配置项,确保其值为~/airflow/dags(若使用自定义DAG目录需对应修改)
- 执行
- 统一conda环境上下文:
- 激活Airflow所在的conda环境:
conda activate <你的环境名称> - 执行
which airflow,确认输出路径属于当前conda环境(例如~/miniconda3/envs/airflow_env/bin/airflow),避免混用系统Python环境的Airflow
- 激活Airflow所在的conda环境:
- 强制重新解析DAG:执行
airflow dags reserialize触发DAG文件的重新解析,之后运行airflow dags list查看目标DAG是否出现 - 检查文件权限:确保DAG文件具备可读权限,执行
ls -l ~/airflow/dags/download_publications_data_dag.py,若权限不足,执行chmod +r ~/airflow/dags/download_publications_data_dag.py - 排查解析日志:若以上步骤无效,查看调度器日志定位问题:
查找与DAG解析相关的错误信息,比如依赖缺失、语法兼容问题等cat ~/airflow/logs/scheduler/latest/*.log
内容的提问来源于stack exchange,提问作者m2h9
相关产品推荐
相关产品推荐

