小编Est*_*rra的帖子

如何在不同的DAG中使用通用脚本?

我正在尝试在许多 DAG 中导入脚本以多次调用相同的操作。应用这种解决方案的最佳方法是什么?

现在我的文件夹结构如下:

dags/
|-- some_dags_folder/
|---- some_dag.py
|-- other_dags_folder/
|---- another_dag.py
|-- utils/
|---- util_slack.py
Run Code Online (Sandbox Code Playgroud)

当我尝试导入util_slack文件时,我将以下代码放入 DAG 代码中,例如假设代码来自some_dag.py:

from ..utils.util_slack import some_function

将所有内容放入 Airflow 后,出现以下错误:

Broken DAG: [/usr/local/airflow/dags/some_dags_folder/some_dag.py] attempted relative import with no known parent package

该util_slack脚本是一个用于发送成功消息或失败消息的文件,它看起来像这样

dags/
|-- some_dags_folder/
|---- some_dag.py
|-- other_dags_folder/
|---- another_dag.py
|-- utils/
|---- util_slack.py
Run Code Online (Sandbox Code Playgroud)

我的想法是,我可以将util_slack模块或任何其他自制模块导入到多个 DAG 中,并调用我需要的函数

from airflow.contrib.operators.slack_webhook_operator import SlackWebhookOperator
from airflow.hooks.base_hook import BaseHook

CHANNEL = BaseHook.get_connection('Slack').login
TOKEN = BaseHook.get_connection('Slack').password

def slack_success(context):
    ... …
Run Code Online (Sandbox Code Playgroud)

python airflow

4
推荐指数
1
解决办法
2414
查看次数

标签 统计

airflow ×1

python ×1