[英]Generating DAG from another DAG
我想从另一个 DAG 动态创建 DAG,例如,当操作员将触发这个父 DAG 时,它应该生成新的 dag。
以下代码运行无误,但未创建 DAG。
我看不出原因。
def generate_dag():
def do_something():
print('something')
default_args = {
'schedule_interval': '@hourly',
'start_date': datetime(2022, 1, 1),
'is_paused_upon_creation': True
}
dag = DAG("generated_dag",
default_args=default_args,
catchup=False
)
with dag:
do_something = PythonOperator(
task_id="do_something",
python_callable=do_something,
dag=dag
)
do_something
return dag
default_args = {
'owner': 'airflow',
'max_active_runs': 1,
'retries': 0
}
dag = DAG(
'createme',
default_args=default_args,
schedule_interval=None,
start_date=datetime(2019,4,29),
catchup=False,
is_paused_upon_creation=False,
)
def create_dag():
dag = generate_dag()
globals()['generated_dag'] = dag
create = PythonOperator(
task_id="create",
python_callable=create_dag,
dag=dag
)
create
我不想在 dags 文件夹中生成 DAG python文件。
您不需要createme
DAG,只需运行create_dag
即可。 天文学家有一篇很棒的文章,里面有例子https://www.astronomer.io/guides/dynamically-generating-dags/
from datetime import datetime
from airflow.operators.python import PythonOperator
from airflow import DAG
def generate_dag():
def do_something():
print('something')
default_args = {
'schedule_interval': '@hourly',
'start_date': datetime(2022, 1, 1),
'is_paused_upon_creation': True
}
dag = DAG("generated_dag",
default_args=default_args,
catchup=False
)
with dag:
do_something = PythonOperator(
task_id="do_something",
python_callable=do_something,
dag=dag
)
do_something
return dag
def create_dag():
dag = generate_dag()
globals()['generated_dag'] = dag
create_dag()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.