如何在python项目和airflow之间共享代码?

t98cgbkg  于 2023-01-04  发布在  Python
关注(0)|答案(2)|浏览(158)

我们有一个python项目结构如下,气流是一个新的:

├── python
│   ├── airflow
│   │   ├── airflow.cfg
│   │   ├── config
│   │   ├── dags
│   │   ├── logs
│   │   ├── requirements.txt
│   │   └── webserver_config.py
│   ├── shared_utils
│   │   ├── auth
│   │   ├── datadog
│   │   ├── drivers
│   │   ├── entities
│   │   ├── formatter
│   │   ├── helpers
│   │   └── system
...

我想知道如何在我的airflow dags中调用shared_utils中的代码,或者我应该如何组织项目结构才能做到这一点?

xesrikrc

xesrikrc1#

我有一个项目,我有这个项目的布局

|
|-- dags/
|---- dag.py
|-- logs/
|-- plugins/
|---- __init__.py
|---- core.py
|-- airflow.cfg

然后我把核心部分保存在core.py中。
当我想使用www.example.com文件中的代码时core.py,我将在www.example.com中dag.py执行以下操作:

from core import <some function>
  • 注:*

这是我的airflow.cfg文件,它注册了plugins文件夹,以便PythonVirtualOperator可以找到插件中的代码。

[core]
dags_folder = {AIRFLOW_HOME}/dags

plugins_folder = {AIRFLOW_HOME}/plugins%

顶级域名注册商;

因此,对于您的情况,我可以想象您可以在airflow.cfg中这样做:

plugins_folder = {AIRFLOW_HOME}/shared_utils%
yduiuuwa

yduiuuwa2#

你可以把你的shared_utils文件夹移到python文件夹下的一个新文件夹my_package中,然后把my_package路径添加到你的python路径中:

# in your host
echo export PYTHONPATH="/path/to/python/my_package:$PYTHONPATH" >> ~/.profile
# in airflow docker image
ENV PYTHONPATH="/path/to/python/my_package"

现在你可以在所有的python控制台中从你的包导入:

from shared_utils.auth import module_x

相关问题