我不明白之间的差别dag_concurrency和parallelism。文档和这里的一些相关帖子在某种程度上与我的发现相矛盾。
我之前的理解是,该parallelism参数允许您设置气流中可能的全局(跨所有 DAG)TaskRundag_concurrency的最大数量,并表示单个 Dag 可能的 TaskRun 的最大数量。
所以我将 设置parallelism为 8 和dag_concurrency4 并运行一个 Dag。我发现它一次运行 8 个 TI,但我期望它一次运行 4 个。
这怎么可能?
此外,如果有帮助,我已将这些任务的池大小设置为 10 左右。但这应该无关紧要,因为“配置”参数的优先级高于池的优先级,对吗?
另一个答案只是部分正确:
dag_concurrency没有明确控制每个 worker 的任务。dag_concurrency 是每个 dag_run 同时运行的任务数。因此,如果您的 DAG 有一个地方可以同时运行 10 个任务,但您想限制工作人员的流量,您可以将 dag_concurrency 设置得更低。
queues 和 pools 设置也会影响每个 worker 的任务数。
当您开始构建同时运行的 DAG 的大型库时,这些设置非常重要。
并行度是所有工作线程和 DAG 的最大任务数。