繁体   English   中英

气流 - 从自定义对象生成 DAG

[英]Airflow - generate DAG from custom object

我正在使用气流 1.10.3。 我正在尝试创建一个可以多次实例化的类来为我生成 DAG。 这是一个简化的示例:

from airflow import DAG
from airflow.operators.python_operator import PythonOperator


class DagClass:

    def __init__(self, dag_id):
        self.dag_id = dag_id


    def test_function():
        print("test 1")

    def test_function2():
        print("test 2")


    def generate_dag(self):
        dag = DAG(self.dag_id)

        task1 = PythonOperator(
                  task_id="test",
                  python_callable=self.test_function,
                  provide_context=True,
                  dag=dag
                )

        task2 = PythonOperator(
                task_id="test2",
                python_callable=self.test_function2,
                provide_context=True,
                dag=dag
                )

        task1.set_downstream(task2)

        return dag

然后,我尝试使用该类在此处的另一个文件中创建 DAG:

from airflow import DAG
from dynamic_dag_test.dag_class import DagClass

dag_class = DagClass('test_dynamic_dag')

dag = dag_class.generate_dag()

globals()['test_dynamic_dag'] = dag

但是,如果我这样做,我不会收到任何错误,但我的 DAG 永远不会出现在 Web UI 中。 但是,如果我去掉这个类并直接从另一个文件导入函数,它就可以正常工作。

有谁知道这是为什么以及我如何让它与班级一起工作? 谢谢!

我也可以通过 Airflow 1.10.1 确认David Schuler评论 我们必须将 import 语句( from airflow import DAG )放在 Python 文件的顶部。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM