在 Apache Airflow 2 中监控一个长 运行 任务的进度

Monitoring progress of a long running task in Apache Airflow 2

我正在尝试将一个临时控制和监视的工作流移动到 Airflow 2。该工作流由多个步骤组成,非常典型的用例,只有一个例外 - 一个步骤很长 - 运行正在工作。

在极少数情况下,这项工作可能需要 几分钟一天(甚至两天)。该任务实际上是由不同的系统执行的(不受我的控制),这里的 Airflow 只负责远程启动它并轮询状态。无法将任务拆分成更小的任务。但是,我能够在 运行ning 时监控任务的状态和进度。在任务执行之前,我自己也无法对任务难度做出任何假设——我完全依赖报告的进度。

尽管总步数仍然相同,但每个 DAG 运行 的时间量可能在数量级上有所不同。因此,以某种方式将有关任务进度的知识整合到 Airflow 中将非常有帮助。任何提示如何处理这个?

任务进度是airflow默认缺少的一个功能,但是可以通过自定义Airflow的方式添加。

如果您想要 Airflow UI 中的深度集成解决方案,我想您应该能够编写一个可以为您完成的插件。它可以创建一个新视图,在其中可以显示此类进度 - 视图必须采用某种唯一 ID 并查询外部系统的状态并显示它。

另一个 - 我认为更简单和更“面向未来” - 方法是你可以创建一个“额外的 link” https://airflow.apache.org/docs/apache-airflow/stable/howto/define_extra_link.html - 也使用插件机制或自定义提供程序,这将添加任务中的一个按钮,可以将您重定向到该任务的“外部提供”状态页面。

我推荐后者,因为它对 Airflow 未来的任何变化都更具“弹性”。我们正在为 Airflow 开发新的 UI,修改 Airflow 的视图将与此不兼容。