Да, вы можете создавать динамические c группы обеспечения доступности баз данных следующим образом:
from datetime import datetime
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
def create_dag(dag_id,
schedule,
dag_number,
default_args):
def hello_world_py(*args):
print('Hello World')
print('This is DAG: {}'.format(str(dag_number)))
dag = DAG(dag_id,
schedule_interval=schedule,
default_args=default_args)
with dag:
t1 = PythonOperator(
task_id='hello_world',
python_callable=hello_world_py,
dag_number=dag_number)
return dag
# build a dag for each number in range(10)
for n in range(1, 10):
dag_id = 'hello_world_{}'.format(str(n))
default_args = {'owner': 'airflow',
'start_date': datetime(2018, 1, 1)
}
schedule = '@daily'
dag_number = n
globals()[dag_id] = create_dag(dag_id,
schedule,
dag_number,
default_args)
Пример из https://www.astronomer.io/guides/dynamically-generating-dags/
Однако обратите внимание, что это может вызвать некоторые проблемы как задержки между выполнением задач. Это связано с тем, что Airflow Scheduler и Worker придется анализировать весь файл при планировании / выполнении каждой задачи для одной группы обеспечения доступности баз данных.
Так как в одном файле будет много DAG (скажем, 100), это будет означать, что все 100 объектов DAG должны быть проанализированы при выполнении одной задачи для DAG1.
Я бы порекомендовал создать инструмент, который создает один файл для DAG.