跳转至

Work Pools

Work Pool = Prefect 编排层 和 实际执行基础设施 之间的桥梁。

它的核心作用是:

动态地分配和配置运行 flow 所需的基础设施。

%%{
  init: {
    'theme': 'neutral',
    'themeVariables': {
      'margin': '10px'
    }
  }
}%%

flowchart LR

    B(Deployment Definition)

    subgraph Prefect_API [Prefect API]
        C(Deployment)
        P(Work Pool)
    end

    subgraph Remote_Storage [Remote Storage]
        D(Flow Code)
    end

    E(Worker)

    subgraph Infrastructure
        F((Flow Run))
    end

    B --> C
    B -.-> D

    C --> P
    P --> E

    D -.-> E
    E --> F

Work Pool 类型

Prefect 中,work pool 仍然是统一的基础设施配置接口,但并不是所有类型都需要你自己运行 worker。

类型 描述 需要运行 worker
Hybrid 在你自己的基础设施中运行 worker,由 worker 把 flow run 提交到你的基础设施 Yes
Push flow run 直接被推送到你配置好的无服务器基础设施 No
Managed flow run 直接被提交到 Prefect 托管的基础设施 No

Work Queues

每个 Work Pool 下可以定义多个 Work Queue,用于实现更灵活的任务调度与资源分配。

默认队列

  • 每个 Work Pool 自带一个名为 default 的默认队列。
  • 如果 Deployment 未显式指定队列,则会被分配到 default 队列。

核心作用

Work Queue 主要有两个核心作用:

  1. 任务优先级控制:可以为不同的队列设置优先级,从而决定哪些队列的任务优先被分配执行。
  2. 并发数限制:可以为每个队列单独设置最大并发数,控制该队列下同时运行的任务数量,防止资源被单一路径占满。

通过合理划分和配置 Work Queue,可以实现更细粒度的流控与资源隔离,提升任务调度的灵活性和系统稳定性。


Queue Priority

每个队列都有一个唯一的正整数优先级: - 数字越小,优先级越高 - 1 是最高优先级

默认情况下,所有队列的优先级都是 1。


Concurrency Limits

每个 Work Queue 可以有自己的并发限制。 同时还要注意:队列的并发限制还要受 work pool 的全局并发限制约束。

也就是说:

  • 队列的并发限制不能超过自己的 limit
  • 也不能超过整个 pool 的 limit