[英]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.