Workers
Worker = 负责执行 Flow Run 的“执行器”。 它是一个轻量级服务,主要做两件事:
- 轮询(Poll)Work Pool 获取待执行的 Flow Run
- 启动基础设施并执行 Flow Run
Worker = 从 Prefect 拉任务 + 在指定环境执行任务
核心架构
整体流程:
- Deployment 被分配到某个 Work Pool
- Worker 持续轮询这个 Work Pool
- 拿到任务后:
- 创建执行环境(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 |