向Airflow中的DAG添加定义的推荐方法

时间:2019-03-21 09:31:37

标签: python airflow

我的Python项目的结构大致如下:

./code
./code/pipeline_xyz.py
./code/pipeline_xyz_test.py
./...
./code/utils.py
./definitions.py

管道依赖于utils.py,它也位于目录code中。在definitions.py中,我获取了所有代码都使用的根目录的绝对目录。

当我将code_pipeline_*[^test].py复制到Airflow的dags文件夹时,由于缺少模块definitions,它无法运行。

处理这种设置的推荐方法是什么?我应该为此创建一个静态文件夹(在项目目录之外),还是可以将定义和管道的结构复制到dags

2 个答案:

答案 0 :(得分:0)

我个人更喜欢众所周知的结构:

 airflow-example-dags git:(master) tree -L 3
.
├── Dockerfile
├── LICENSE
├── dags
│   ├── example-dag.py
│   └── example_bash_operator.py
├── packages.txt
├── plugins
│   └── example-plugin.py
└── requirements.txt

2 directories, 7 files

或者您可以在此处airflow-example-dags

进行检查

答案 1 :(得分:0)

基本上,dags文件夹已添加到PYTHONPATH。因此,所有模块定义都应相对于dags文件夹。例如,如果您将文件复制到dags文件夹中,如下所示:

/home/airflow/dags/pipeline_xyz_test.py
/home/airflow/dags/utils.py
/home/airflow/dags/definitions.py

pipeline_xyz_test.py位于import definitions.test_class1内的test_class1中,您可以执行definitions.py