Azure托管Airflow运行自定义DAG遇模块缺失错误及功能疑问
ADF托管Airflow实例问题解答
一、解决ModuleNotFoundError: No module named 'dependencies'报错
你的目录结构中,dependencies文件夹与dags同级,但Airflow默认仅将dags目录加入Python模块搜索路径,导致DAG文件无法直接导入dependencies下的模块。可通过两种方式解决:
- 方式1:在DAG文件中手动添加模块路径
在lottery_main.py开头加入以下代码,将dependencies所在目录纳入Python搜索路径:
import sys from pathlib import Path # 获取airflow根目录(dags文件夹的父目录) airflow_root = Path(__file__).parent.parent # 将dependencies目录添加到sys.path sys.path.append(str(airflow_root / "dependencies")) # 现在可正常导入lottery_pb模块 from lottery_pb import 你的目标函数/类
- 方式2:调整目录结构
将dependencies文件夹移动到dags目录下,Airflow会自动识别该目录内的模块,无需修改导入路径。调整后结构如下: - airflow目录
- dags文件夹
- lottery_main.py
- dependencies文件夹:包含lottery_pb.py
- dags文件夹
二、关于托管Airflow运行自定义任务的疑问
ADF托管的Airflow是完整的Apache Airflow环境,完全支持运行自定义任务,并非只能在DAG中调用ADF管道。你可以使用Airflow原生的所有Operator(如PythonOperator、BashOperator、PostgresOperator等)编写自定义业务逻辑,功能与独立部署的Airflow实例完全一致。
网上资源多展示调用ADF管道的场景,是因为这是ADF与托管Airflow集成的典型用法,但这并不限制你使用Airflow的全部原生能力。
内容的提问来源于stack exchange,提问作者Mani
相关产品推荐
相关产品推荐

