1

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

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

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

4

1 回答 1

1

任务进度是默认情况下气流中缺少的一项功能,但有一些方法可以通过自定义气流来添加它。

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

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

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

于 2021-11-25T08:45:15.257 回答