Airflow - 获取 DAG 的结束时间 运行
Airflow - Get End Time of DAG run
是否可以在Airflow中获取dag的实际结束时间?结束时间是指 dag 的最后一个任务完成的确切时间。
为了观察我们的应用程序的性能,我应该将 DAG 所花费的时间写入一个文件并比较它们在不同负载下的性能。我通过 context["dag_run"].start_date 得到了开始时间。但是当我打印 context["dag_run"].end_date 时,我得到 None.
有什么解决办法吗?
您是否尝试过在 DAG 的 on_success_callback
参数上使用回调函数?
可能它说 None
因为在它获取结束日期时 DAG 尚未完成
A DagRun
在执行完成并达到最终状态之前永远不会有结束日期 (success/failure)
要获取此详细信息,您将查询后端数据库以获取 end_date
与 UI 中显示的一样(使用 connection_id: airflow_db
),如果您是 Airflow 的新手,它可能会变得有点复杂,并且需要在单独的 DagRun 中一起完成。
如果您对接近 dag_run 的实际 end_date 的东西没问题,您可以使用@lealvcon 描述的解决方案。
为了详细说明他的答案,您必须在 DAG 中的最终任务上分配 on_success_callback
,并且您可以获得当前日期时间 (datetime.utcnow()
) 作为最接近的 DagRun end_date
.
是否可以在Airflow中获取dag的实际结束时间?结束时间是指 dag 的最后一个任务完成的确切时间。
为了观察我们的应用程序的性能,我应该将 DAG 所花费的时间写入一个文件并比较它们在不同负载下的性能。我通过 context["dag_run"].start_date 得到了开始时间。但是当我打印 context["dag_run"].end_date 时,我得到 None.
有什么解决办法吗?
您是否尝试过在 DAG 的 on_success_callback
参数上使用回调函数?
可能它说 None
因为在它获取结束日期时 DAG 尚未完成
A DagRun
在执行完成并达到最终状态之前永远不会有结束日期 (success/failure)
要获取此详细信息,您将查询后端数据库以获取 end_date
与 UI 中显示的一样(使用 connection_id: airflow_db
),如果您是 Airflow 的新手,它可能会变得有点复杂,并且需要在单独的 DagRun 中一起完成。
如果您对接近 dag_run 的实际 end_date 的东西没问题,您可以使用@lealvcon 描述的解决方案。
为了详细说明他的答案,您必须在 DAG 中的最终任务上分配 on_success_callback
,并且您可以获得当前日期时间 (datetime.utcnow()
) 作为最接近的 DagRun end_date
.