包括天文学家气流的自定义代码

Including custom code to astronomer airflow

我正在使用 astronomer 的气流解决方案,我正在尝试从另一个存储库添加我自己的自定义代码。

我的爸爸:

from my_code.my_file import *

@dag(...)
def dag():
  pass

我有一个操作管道,基本上将 my_code 复制到气流设置中的 include 目录中(有关详细信息,请参阅 quickstart guide)。

不幸的是,dag 导入失败

ModuleNotFoundError: No module named 'my_code'

这是 ops 脚本复制代码后 include 目录的样子:

.
├── include
│   └── my_code 
│       └── my_file.py

关于如何在此处包含自定义代码的任何想法或文档链接?


编辑:

还有两点需要考虑:

  1. 业务逻辑代码需要与编排层保持无关
  2. IDE 不应索引 include 目录,因为它将包含重复代码(它是一个 monorepo)

尝试from include.my_code.my_file import *

编辑

或者您可以尝试将 include 文件夹添加到 Astronomer 提供的 Dockerfile 中的 PYTHONPATH,例如:ENV PYTHONPATH="${PYTHONPATH}:/usr/local/airflow/include".