【问题标题】:Airflow execute task in sequence without defining dependency气流按顺序执行任务,不定义依赖
【发布时间】:2022-11-13 07:52:05
【问题描述】:

在 Airflow DAG 中定义多个“KubernetesPodOperator”任务时,所有任务都会并行执行。

为了实现顺序执行,可以定义依赖关系,比如task1 >> task2 >> task3等。

这种方法的问题在于失败场景,task1 单独无法重新执行,依赖任务将在task1 完成时执行。

如何在没有依赖的情况下按顺序执行任务?我不想修改 Airflow 配置,需要特定于 Airflow DAG/任务的设置。希望得到支持。

【问题讨论】:

  • 您能否澄清“单独的任务1不能重新执行,依赖任务将在任务1完成时执行”的意思?如果任务 1 成功,则任务 2 将运行。如果任务 1 失败,则任务 2 和任务 3 将被标记为“上游失败”并且不会运行。你想要什么行为?
  • 实际上不依赖于任务。 Ask是按顺序运行任务。添加依赖项后,重新运行成功的任务(出于某种原因)会触发下游任务,这是不希望的。
  • 您如何通过 UI 重新触发任务 1?当您更改任务状态时,specify if the downstream tasks 也应该被清除。
  • @DanielT 是的!这将解决问题。我可以接受这个作为答案,请发布。

标签: airflow airflow-2.x


【解决方案1】:

顺序执行需要依赖定义,但是如果你想限制你的dag中运行任务的数量,并且一次只运行一个任务而不考虑执行的顺序,你可以将dag的concurrency参数设置为1,或者使用一个池在所有 dag 任务中大小为 1,但在这两个选项中,您将在所有运行中运行一个任务。

如果您的依赖项问题只是需要在不清除/不清除下游状态的情况下清除任务状态,则可以在有/没有此选项的情况下使用 UI clear:

  • 下游:清除当前 DAG 运行中所选任务实例下游的任何任务。 (doc)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    • 2018-04-13
    相关资源
    最近更新 更多