Airflow:并发深度优先,而不是广度优先?
Airflow: Concurrency Depth first, rather than breadth first?
在 airflow 中,默认配置似乎是跨天(从一天到下一天)并行地对任务进行排队。
但是,如果我将这个过程加快,比如说,两年,那么气流 dag 将首先通过初步过程搅动,跨越所有天,而不是同时从开始到结束向前推进 4 天。
如何切换气流以根据深度优先范例而不是广度优先范例执行任务?
尝试切换 airflow.cfg 中的 parallelism
和 max_active_runs
参数以及 DAG 中的 concurrency
参数.
我遇到过类似的情况。我使用以下技巧来实现 depth-first 行为。
- 将 DAG 的所有任务分配给 single
pool
(插槽数量有限,例如 20-30)
- 将
weight_rule=upstream
设置为以上所有任务
说明
- UPSTREAM weight_rule 根据任务在整个工作流程中的位置 反转任务的优先级,导致所有下游任务的优先级高于上游任务。
- 这将确保启动的任何分支都将在选择下一个分支之前完成,从而实现深度优先行为
在 airflow 中,默认配置似乎是跨天(从一天到下一天)并行地对任务进行排队。
但是,如果我将这个过程加快,比如说,两年,那么气流 dag 将首先通过初步过程搅动,跨越所有天,而不是同时从开始到结束向前推进 4 天。
如何切换气流以根据深度优先范例而不是广度优先范例执行任务?
尝试切换 airflow.cfg 中的 parallelism
和 max_active_runs
参数以及 DAG 中的 concurrency
参数.
我遇到过类似的情况。我使用以下技巧来实现 depth-first 行为。
- 将 DAG 的所有任务分配给 single
pool
(插槽数量有限,例如 20-30) - 将
weight_rule=upstream
设置为以上所有任务
说明
- UPSTREAM weight_rule 根据任务在整个工作流程中的位置 反转任务的优先级,导致所有下游任务的优先级高于上游任务。
- 这将确保启动的任何分支都将在选择下一个分支之前完成,从而实现深度优先行为