Как запустить внешний DAG как часть моего DAG? - PullRequest
0 голосов
/ 05 сентября 2018

Я новичок в Airflow и пытаюсь запустить внешний DAG (разработанный и принадлежащий другой группе), как часть моего потока DAG.

Я смотрел на SubDagOperator, но, похоже, по какой-то причине он принудительно устанавливает имя подпада. что я не могу сделать, так как дочерняя метка принадлежит другой команде.

вот мой пример кода:

parent_dag = DAG(
dag_id='parent_dag', default_args=args,
schedule_interval=None)

external_dag = SubDagOperator(
subdag=another_teams_dag,
task_id='external_dag',
dag=parent_dag,
trigger_rule=TriggerRule.ALL_DONE
)

и знак другой команды определяется так:

another_teams_dag = DAG(
dag_id='another_teams_dag', default_args=args,
schedule_interval=None)

но я получаю эту ошибку:

dag_id подпада должен иметь форму {Parent_dag_id}. {This_task_id} '. Ожидаемый «parent_dag.external_dag»; получил 'another_teams_dag'.

Есть идеи? Чего мне не хватает?

1 Ответ

0 голосов
/ 05 сентября 2018

Использование TriggerDagRunOperator

Подробнее: https://airflow.apache.org/code.html#airflow.operators.dagrun_operator.TriggerDagRunOperator

Пример:

Дага, который вызывает : https://github.com/apache/incubator-airflow/blob/master/airflow/example_dags/example_trigger_controller_dag.py

Дага, который срабатывает : https://github.com/apache/incubator-airflow/blob/master/airflow/example_dags/example_trigger_target_dag.py

В вашем случае вы можете использовать что-то вроде:

trigger = TriggerDagRunOperator(task_id='external_dag',
                                trigger_dag_id="another_teams_dag",
                                dag=dag)
...