【问题标题】:Monitoring progress of a long running task in Apache Airflow 2在 Apache Airflow 2 中监控长时间运行的任务的进度
【发布时间】:2022-01-03 06:55:51
【问题描述】:

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

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

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

【问题讨论】:

    标签: airflow airflow-2.x


    【解决方案1】:

    Task 进度是 Airflow 中默认缺少的一项功能,但可以通过自定义 Airflow 来添加它。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-13
      • 1970-01-01
      相关资源
      最近更新 更多