运行 Google 的 Cloud Compose 时,气流 dag 依赖项对 dag 不可用

Sor*_*ani 3 google-cloud-platform google-kubernetes-engine airflow google-cloud-composer

Airflow 允许您将 dag 依赖的依赖项(外部 python 代码到 dag 代码)放在 dag 文件夹中。这意味着这些外部 python 代码中的任何组件/成员或类都可用于 dag 代码。

但是,在执行此操作时(在云组合环境的 GCS dag 文件夹中),依赖项的组件对 dag 不可用。Airflow Web UI 中显示类似于以下内容的错误:Broken DAG: [/home/airflow/gcs/dags/....py] No module named tester. 其中 tester 是 dags 文件夹中的一个单独的 python 文件。

在使用 Google 的 SDK(运行实际的 Airflow 命令)测试这些任务时,任务运行良好,但似乎在 Kubernettes 中的某个地方创建了这些容器作业,它似乎也没有接管依赖项。

我意识到 Cloud Compose 处于测试阶段,但我想知道我是否做错了什么。

小智 5

您应该将模块放在一个单独的文件夹中,该文件夹包含一个 __init__.py 文件(Airflow 不喜欢其顶级 DAGs 目录中的 __init__.py 文件)。

例如,如果您有以下目录结构:

dags/
    my_dag.py
    my_deps/
        __init__.py
        dep_a.py
        dep_b.py
Run Code Online (Sandbox Code Playgroud)

你可以写from my_deps import dep_a, dep_bmy_dag.py.