尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

如何在 Windows 上运行自托管 Prefect server

如何在 Windows 上运行自托管 Prefect server 如何在 Windows 上运行自托管 Prefect server【免费下载链接】prefectPrefect is a workflow orchestration framework for building resilient data pipelines in Python.项目地址: https://gitcode.com/GitHub_Trending/pr/prefect这篇文章解决的问题是在 Windows 机器上把 Prefect server 跑起来并作为自托管实例使用。Prefect 对 Windows 提供了一等支持它会自动检测 PowerShell 并将其作为默认 shell子进程执行与 Windows 进程管理完全兼容路径约定包括指向网络共享的 UNC 路径也全部受支持。完成本文后你会得到一个运行在http://127.0.0.1:4200的本地 Prefect server 实例如果目标是生产环境还可以按文档把 server 注册成 Windows 服务随系统启动。准备条件安装 Prefect前提要求来自安装文档需要 Python 3.10 或更高版本建议先创建 Python 虚拟环境再安装。通过 PowerShell 或 Windows Command Prompt 安装pip install -U prefect安装完成后用下面命令确认prefect version文档给出的示例输出仅作文档示例你的版本号会不同Version: 3.4.24 API version: 0.8.4 Python version: 3.12.8 OS/Arch: darwin/arm64 Profile: local Server type: serverWindows 特有的注意事项如果安装后提示找不到prefect命令通常是因为 Python 的本地包Scripts目录不在PATH中。查看pip install输出信息中给出的Scripts目录路径确认它在PATH里。另外如果你自托管 Prefect server客户端版本需要与 server 保持兼容一般客户端版本小于或等于 server 版本。启动 server 并验证在终端中运行prefect server start启动成功后在浏览器打开默认的 UI 地址 http://127.0.0.1:4200。这就是文档中验证 server 已运行的方式能在浏览器中看到 UI 页面说明服务正常。然后让客户端指向这个自托管实例prefect config set PREFECT_API_URLhttp://127.0.0.1:4200/api这个 API 地址可以保存在 Prefect profile 中只要该 profile 处于激活状态API 端点就指向这个地址。需要停止 server 时在终端按ctrl c。数据库配置默认情况下不需要任何配置Prefect 使用 SQLite数据库文件位于%USERPROFILE%\.prefect\prefect.db。如果面向生产部署想改用 PostgreSQL设置标准连接串即可postgres、password、主机与库名按你的实际环境替换prefect config set PREFECT_SERVER_DATABASE_CONNECTION_URLpostgresqlasyncpg://postgres:passwordlocalhost:5432/prefect另外两点 Windows 相关的配置说明环境变量按标准 Windows 约定工作可以用 PowerShell 语法设置。对当前会话生效$env:PREFECT_SERVER_DATABASE_TIMEOUT 600为用户永久生效[System.Environment]::SetEnvironmentVariable(PREFECT_SERVER_DATABASE_TIMEOUT, 600, User)注意PREFECT_API_DATABASE_*这类变量名如PREFECT_API_DATABASE_TIMEOUT仍作为旧别名被接受但规范命名使用PREFECT_SERVER_DATABASE_前缀。企业环境中常见的网络共享存储也可以直接用作PREFECT_HOME# 通过 UNC 路径把数据目录放到网络共享上 prefect config set PREFECT_HOME\\server\share\prefect-data # 或者使用映射盘符 prefect config set PREFECT_HOMEZ:\prefect-data # 标准 Windows 路径同样可以 prefect config set PREFECT_HOMEC:\ProgramData\Prefect放行防火墙端口并配置 PowerShell 策略Windows 环境下有两项与安全相关的配置需要处理。放行 4200 端口。server 默认监听 4200 端口需要允许 Prefect server 通过 Windows 防火墙。以下命令需要以管理员身份运行的 PowerShell 执行副作用是新增一条入站防火墙规则New-NetFirewallRule -DisplayName Prefect Server -Direction Inbound -Port 4200 -Protocol TCP -Action Allow配置 PowerShell 执行策略。如果运行脚本或部署时遇到执行策略报错为当前用户设置策略只影响当前用户不改动系统级设置Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser性能方面文档建议把%USERPROFILE%\.prefect\、Python 安装目录以及 flow 使用的临时目录加入杀毒软件排除列表避免实时扫描干扰 Prefect 的读写操作。可选把 server 注册为 Windows 服务如果目标是生产环境文档建议将 Prefect server 作为 Windows 服务运行这样它会在系统启动时自动拉起并在失败时自动重启。推荐工具是 NSSMNon-Sucking Service Manager从 nssm.cc 官方站点下载后以管理员身份运行以下命令。其中Application指向你的python.exe实际路径AppDirectory指向项目目录按实际情况替换nssm install PrefectServer nssm set PrefectServer Application C:\Path\To\Python\python.exe nssm set PrefectServer AppParameters -m prefect server start nssm set PrefectServer AppDirectory C:\Path\To\Your\Project # 需要时追加环境变量 nssm set PrefectServer AppEnvironmentExtra PREFECT_API_URLhttp://localhost:4200/api nssm start PrefectServer验证方式与前台运行一致nssm start PrefectServer之后在浏览器打开http://127.0.0.1:4200能看到 UI 即表示服务已运行。可选在 Windows 上运行 workerserver 跑起来后flow 的执行由 worker 完成。Windows 上的 worker 支持进程执行和 Docker 两种模式# 以 Windows 进程直接运行 flow prefect worker start --pool my-process-pool --type process # 用 Docker Desktop 的 Windows 容器做隔离执行 docker pull mcr.microsoft.com/windows/servercore:ltsc2019 prefect worker start --pool my-docker-pool --type docker常见问题排查文档列出了 Windows 上最常见的几类问题均给出检查命令。prefect命令找不到。几乎都是 PATH 问题确认 Python 的Scripts目录在 PATH 中改完后重启 PowerShell。可以用where prefect验证命令能否被找到也可以用下面命令检查 PATH 里是否包含 Scripts 目录$scriptsPath需替换成你自己的 Python 安装路径# 检查 PATH 中是否有 Scripts 目录 $env:PATH -split ; | Select-String Scripts # 把 Scripts 目录加入 PATH $scriptsPath C:\Users\$env:USERNAME\AppData\Local\Programs\Python\Python39\Scripts $env:PATH ;$scriptsPath端口冲突导致 server 无法启动。先查 4200 端口被谁占用netstat -ano | findstr :4200确认是残留进程后可以强杀taskkill会立即终止对应进程PID 换成查到的实际值taskkill /PID 1234 /F或者干脆给 server 换一个端口然后同步更新客户端配置$env:PREFECT_SERVER_API_PORT 8080 prefect server start prefect config set PREFECT_API_URLhttp://127.0.0.1:8080/api字符编码错误。部分 Windows 系统上会出现charmap codec一类的编码报错设置 Python I/O 编码为 UTF-8 即可$env:PYTHONIOENCODING UTF-8权限错误。涉及系统范围的变更如防火墙规则、NSSM 安装服务需要用管理员身份的 PowerShell其他权限问题检查 Prefect 目录的文件权限。网络连通性问题则通常与 Windows 防火墙规则或公司代理设置有关。参考Windows 专项指南本文主要依据server-windows.mdx本地启动自托管 server 的通用说明含 SQLite/PostgreSQL、多 worker 模式server-cli.mdx安装与验证install.mdx需要扩展容量时多 worker 模式prefect server start --workers 4要求 PostgreSQL 与 Redis 支撑参见 server-cli.mdx 中的 Multi-worker 一节。【免费下载链接】prefectPrefect is a workflow orchestration framework for building resilient data pipelines in Python.项目地址: https://gitcode.com/GitHub_Trending/pr/prefect创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表