如何在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
相关产品推荐
相关产品推荐

