【发布时间】:2021-07-15 07:36:23
【问题描述】:
它是一个基于调度的 DAG。气流创建了 4 个 dag 实例,我想确定最后一个完成的 dag 实例,即。 d-instance-2。在所有 dag-instance 结束时完成。
气流中是否有任何方法可以识别所有正在运行的 dag 实例中最后完成的 dag?
| dag-instance | dag - run order | dag-completion order |
|---|---|---|
| d-instance - 1 | run - 1 | complete - 1 - first (need to identify) |
| d-instance - 2 | run - 2 | complete - 4 - last (need to identify) |
| d-instance - 3 | run - 3 | complete - 2 |
| d-instance - 4 | run - 4 | complete - 3 |
dag_args = {
"depends_on_past": False,
"start_date": datetime(2017, 1, 1),
"end_date": datetime(2020, 12, 31)}
dag = DAG("Multiple_dag_instance will trigger",
description='dag_description',
default_args=dag_args,
schedule_interval="@yearly")
chain(
task_1,
task_2,
identify_the_final_dag_completion_task)
在这里,start_date: datetime(2017, 1, 1) 和 end_date: datetime(2020, 12, 31) 创建 2017、2018、2019 和 2020 年的 4 个年度 dag 实例。
【问题讨论】:
-
您能解释一下 DAG 的上下文和使用吗?为什么需要识别最后运行的实例?为什么要将
task_2与identify_the_final_dag_completion_task链接起来?这些是什么类型的运算符? -
可以通过 UI 中的 SQL 查询访问此信息。是否足以满足您的需求?
-
@bruno-uy,想在所有 dags 实例成功完成结束后触发通知任务。它基于
PythonOperator
标签: python airflow airflow-scheduler