跳转至

Workers

Worker = 负责执行 Flow Run 的“执行器”。 它是一个轻量级服务,主要做两件事:

  1. 轮询(Poll)Work Pool 获取待执行的 Flow Run
  2. 启动基础设施并执行 Flow Run

Worker = 从 Prefect 拉任务 + 在指定环境执行任务


核心架构

整体流程:

  1. Deployment 被分配到某个 Work Pool
  2. Worker 持续轮询这个 Work Pool
  3. 拿到任务后:
    • 创建执行环境(Infrastructure)
    • 启动 Flow Run
%%{
  init: {
    'theme': 'neutral',
    'themeVariables': {
      'margin': '10px'
    }
  }
}%%

flowchart TD
    subgraph your_infra["Your Execution Environment"]
        worker["Worker"]
        subgraph flow_run_infra[Infrastructure]
            flow_run_a(("Flow Run A"))
        end
        subgraph flow_run_infra_2[Infrastructure]
            flow_run_b(("Flow Run B"))
        end      
    end

    subgraph api["Prefect API"]
    Deployment --> |assigned to| work_pool
        work_pool(["Work Pool"])
    end

    worker --> |polls| work_pool
    worker --> |creates| flow_run_infra
    worker --> |creates| flow_run_infra_2

Worker 类型

每个 Worker 都有一个 type,对应运行环境。

  • Worker 只能轮询 同类型 Work Pool
  • Work Pool 决定执行环境
Worker 类型 简介 需安装的包
process 以本地子进程方式执行 flow run
kubernetes 以 Kubernetes Job 的方式运行 flow run prefect-kubernetes
docker 在 Docker 容器中运行 flow run prefect-docker
ecs 以 AWS ECS 任务方式运行 flow run prefect-aws
cloud-run-v2 以 Google Cloud Run 任务方式运行 flow run prefect-gcp
vertex-ai 以 Google Cloud Vertex AI 任务方式运行 flow run prefect-gcp
azure-container-instance 在 Azure Container Instance (ACI) 容器中运行 flow run prefect-azure
coiled 使用 Coiled 在云端弹性执行 flow run prefect-coiled