WSL2+Docker部署Airflow后自定义DAG无法加载求助
排查Airflow自定义DAG未在WebUI显示的问题
验证DAG文件语法与可执行性
进入Airflow scheduler容器,执行以下命令排查语法问题:- 直接运行DAG文件:
python /opt/airflow/dags/print_hello.py,查看是否有Python语法报错(如导入错误、缩进问题)。 - 让Airflow尝试加载DAG:
airflow dags list | grep print_hello,如果无输出,说明DAG未被识别;若有报错,根据提示修复。 - 测试DAG可用性:
airflow dags test print_hello 2024-07-13,检查是否能正常执行。
- 直接运行DAG文件:
检查Scheduler服务状态与日志
- 查看scheduler运行状态:
docker-compose ps airflow-scheduler,确保状态为Up。 - 查看scheduler日志,搜索DAG相关错误:
docker-compose logs airflow-scheduler | grep print_hello,重点关注解析失败、权限或路径相关的报错。
- 查看scheduler运行状态:
确认挂载卷的配置与同步
- 检查
docker-compose.yml中,是否所有需要读取DAG的服务(scheduler、webserver、worker)都配置了该挂载卷,而非仅airflow-server:volumes: - /mnt/c/Users/ktsha/airflow_dags:/opt/airflow/dags - 验证WSL2与容器的文件同步:在WSL2的
/mnt/c/Users/ktsha/airflow_dags目录修改print_hello.py(如添加注释),进入容器查看文件是否同步更新。若未同步,执行wsl --shutdown重启WSL2后再试。
- 检查
调整Airflow解析配置
- 检查
airflow.cfg中的dag_dir_list_interval(默认300秒),若不想等待,可手动触发DAG序列化:airflow dags reserialize。 - 确认无阻止DAG加载的环境变量,比如
docker-compose.yml中是否存在AIRFLOW__CORE__DAG_DISABLE_DEFAULTS: 'true'这类配置。
- 检查
检查DAG文件内容规范
确认DAG文件满足以下要求:- 定义了有效的DAG实例(如
dag = DAG(...)或用with DAG(...) as dag:语法)。 - DAG的
start_date为过去的时间(避免因未来时间导致DAG被自动暂停)。 - 没有注释掉DAG实例或关键代码块。
- 定义了有效的DAG实例(如
排查容器内Airflow进程权限
- 查看Airflow进程运行用户:
ps aux | grep airflow,确认该用户对/opt/airflow/dags目录有访问权限(即使文件权限为777,目录权限可能限制访问)。 - 检查目录权限:
ls -ld /opt/airflow/dags,确保权限为drwxrwxrwx或所属用户组包含Airflow运行用户。
- 查看Airflow进程运行用户:
内容的提问来源于stack exchange,提问作者Gs.
相关产品推荐
相关产品推荐

