我们可以在 Airflow 中为每个任务设置 priority_weight 吗?

New*_*ler 7 airflow

我知道,priority_weight可以为被设置DAGdefault_args官方文件中按例子在这里

我们还可priority_weight以为 中的每个任务设置不同的DAG吗?

继本教程的例子,那岂不是t1会从具有不同的优先级t2

y2k*_*ham 12

我们还可以为 DAG 中的每个任务设置不同的 priority_weight 吗?

简答

是的


长版

你在这里显得有些困惑。引用给定链接中片段上方段落

..我们可以选择将一组参数显式传递给每个任务的构造函数(这将变得多余),或者(更好!)我们可以定义一个默认参数字典,我们可以在创建任务时使用它。

所以现在你一定已经推断出priority_weight传入的Thedefault_args实际上是针对个体tasks 而不是它DAG本身。当然查看代码很明显它是一个参数BaseOperator不是DAG SQLAlchemy 模型


此外,一旦你了解了上述事实,你很快就会意识到,它不会作出太大的意义相同的分配优先级给每个taskDAG。官方文档中的上述示例似乎确实忽略了这个简单的推理(除非我遗漏了一些东西)。尽管如此,文档字符串似乎确实表明了这一点

:param priority_weight: priority weight of this task against other task.
        This allows the executor to trigger higher priority tasks before
        others when things get backed up.
Run Code Online (Sandbox Code Playgroud)

更新-1

由于正确地指出,通过@Alessandro S.在注释中,分配相同priority_weight的DAG中的所有任务也不是没有道理终究因为priority_weight没有在DAG级别,但是,执行pool水平

  • 因此,当您将 2 个(或更多)dag 放入图片(都访问相同的外部资源)时,一个有效的用例可能是您希望将一个 dag 的所有任务提升到另一个
  • 为了实现这一点,第一个 dag 的所有任务可以是一个单一的值,priority_weight其值高于第二个 dag 中的任务的值。

  • 也许浏览器 [`weight_rule`](https://github.com/apache/airflow/blob/master/airflow/models/baseoperator.py#L129) 有点 (5认同)
  • “为 DAG 的每个任务分配相同的优先级没有多大意义” --> 权重是每个池,而不是每个 DAG,所以对我来说,从池内的一个 DAG 提升任务仍然有意义 (2认同)