Рекомендуемый способ добавления определений в группы доступности баз данных в Airflow - PullRequest
0 голосов
/ 21 марта 2019

Мой проект 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 голосов
/ 21 марта 2019

Обычно папка 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.

0 голосов
/ 21 марта 2019

Я лично предпочитаю хорошо известную структуру:

 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

...