You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Prefect 2.0中以暂停状态部署工作池及内部工作队列?

Prefect 2.0 部署时设置工作队列为暂停状态的实现方法

Prefect 的部署 YAML 本身无法直接定义工作队列的暂停状态(即UI滑块关闭),因为队列的激活状态是工作队列自身的属性,不属于部署配置范畴。不过可以通过Python SDK 一站式完成,或者先创建暂停队列再应用YAML部署两种方式实现需求:

方法一:Python SDK 全流程实现

直接用 Prefect 的 Python API 创建工作池、暂停状态的工作队列,同时完成流部署:

from prefect import flow
from prefect.deployments import Deployment
from prefect.work_pools import WorkPool
from prefect.work_queue import WorkQueue

# 对应你的 uc4_test.py:log_flow
@flow
def log_flow(name: str):
    print(f"Hello {name}!")

# 1. 创建或获取目标工作池
work_pool = WorkPool.get_or_create(name="uc4_test", type="process")

# 2. 创建**暂停状态**的工作队列
work_queue = WorkQueue.get_or_create(
    name="uc4_test",
    work_pool_name="uc4_test",
    active=False  # 核心:设置队列处于暂停状态
)

# 3. 创建并应用部署
Deployment.build_from_flow(
    flow=log_flow,
    name="testing_for_uc4",
    work_queue_name=work_queue.name,
    work_pool_name=work_pool.name,
    parameters={"name": "Lars"},
    path=r"C:\School\2IMS\Internship\Prefect\uc4",
    entrypoint="uc4_test.py:log_flow"
).apply()

运行这段脚本后,uc4_test工作池内的uc4_test工作队列会处于暂停状态,同时流部署会自动关联到该队列。

方法二:YAML部署 + 预创建暂停队列

如果偏好使用YAML文件部署,需要先手动创建暂停状态的工作队列,再应用部署YAML:

步骤1:创建暂停状态的工作队列

用 Prefect CLI 命令快速创建:

# 创建工作池(如果不存在)
prefect work-pool create uc4_test --type process

# 创建暂停状态的工作队列
prefect work-queue create uc4_test --work-pool uc4_test --active false

步骤2:应用你的部署YAML

保持你提供的YAML文件不变,运行以下命令完成部署:

prefect deployment apply your_deployment_file.yaml

部署完成后,该队列会保持暂停状态,和UI中手动关闭滑块的效果完全一致。

内容的提问来源于stack exchange,提问作者larsje99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 15:32:05