Я хочу создать родительский DAG с несколькими дочерними DAG, которые вызываются через SubDagOperator
.
- Я могу найти только примеры динамического создания субдагов в задаче SubDagOperator.
- Однако в этом случае мне нужны автономные дочерние группы DAG, которые уже определены в файле DAG.py, и сшить их вместе в родительском теге.
Если я установил задачу SubDAGOperator только с именем Dag дочернего тега:
task_1 = SubDagOperator(
task_id="task_1",
subdag=child_dag_name,
dag=parent_dag
)
Я получаю следующую ошибку:
NameError: name 'child_dag_name' is not defined
Отвечает ли это на ваш вопрос? Связывание групп DAG верхнего уровня вместе — person Tim M. Schendzielorz schedule 10.05.2020
Я уже нашел этот вопрос. Согласно вашему полному ответу здесь нет быстрого и простого решения, поэтому я мог бы также попробовать вариант TriggerDagRunOperator. В любом случае это кажется более масштабируемым. Я хочу активировать свой первый даг один раз, а затем второй даг нужно активировать один раз, если все задачи предыдущего будут успешными ровно через 24 часа. Возможно ли это с помощью TriggerDagRunOperator? — person Tim M. Schendzielorz schedule 11.05.2020
Этот ответ в равной степени зависит от знания Python и от ноу-хау в Airflow
Напомним, что
python
:import
ing модуля означает, что все элементы верхнего уровня (нулевой отступ) выполняются немедленно (во время процесса импорта)airflow
:scheduler
/webserver
выбираются только теDAG
объекты, которые находятся на верхнем уровне (нулевой отступ) файла определения dagИмея в виду 2 вышеупомянутых момента, вот что вы можете сделать
child_dag.py
файле, чтобы вызвать и вернуть объектDAG
для child-dagSubDagOperator
задачиdag_object_builder.py
child_dag.py
parent_dag.py
SubDagOperator
, я бы предложил вместо этого использоватьTriggerDagRunOperator
, поскольку уSubDag
есть свои доля неприятностей.