PrefectHQ/prefect

GitHub: PrefectHQ/prefect

Prefect 是一个 Python 原生的工作流编排框架,帮助开发者快速将脚本转化为具备调度、重试、缓存和监控能力的生产级数据管道。

Stars: 21752 | Forks: 2144

PyPI Downloads

安装 · 快速开始 · 构建 workflow · 部署 workflow · Prefect Cloud

# Prefect Prefect 是一个用于在 Python 中构建数据管道的 workflow 编排框架。 这是将脚本提升为生产级 workflow 的最简单方法。 使用 Prefect,您可以构建弹性、动态的数据管道,这些管道能够对外部环境做出反应并从意外变更中恢复。 只需几行代码,数据团队就可以自信地自动化任何数据流程,并享受调度、缓存、重试和基于事件的自动化等功能。 Workflow 活动会被记录,并且可以通过自托管的 [Prefect server](https://docs.prefect.io/latest/manage/self-host/?utm_source=oss&utm_medium=oss&utm_campaign=oss_gh_repo&utm_term=none&utm_content=none) 实例或托管式的 [Prefect Cloud](https://www.prefect.io/cloud-vs-oss?utm_source=oss&utm_medium=oss&utm_campaign=oss_gh_repo&utm_term=none&utm_content=none) 仪表板进行监控。 ## 开始使用 Prefect 需要 Python 3.10+。要[安装最新版本的 Prefect](https://docs.prefect.io/v3/get-started/install),请运行以下命令之一: ``` pip install -U prefect ``` ``` uv add prefect ``` 然后创建并运行一个 Python 文件,使用 Prefect 的 `flow` 和 `task` 装饰器来编排和监控您的 workflow——在这个例子中,是一个从仓库获取 GitHub 星标数量的简单脚本: ``` from prefect import flow, task import httpx @task(log_prints=True) def get_stars(repo: str): url = f"https://api.github.com/repos/{repo}" count = httpx.get(url).json()["stargazers_count"] print(f"{repo} has {count} stars!") @flow(name="GitHub Stars") def github_stars(repos: list[str]): for repo in repos: get_stars(repo) # 运行 flow! if __name__ == "__main__": github_stars(["PrefectHQ/prefect"]) ``` 启动 Prefect server 并在 http://localhost:4200 打开 UI 查看运行情况: ``` prefect server start ``` 要按计划运行您的 workflow,请将其转换为 deployment,并通过将脚本的最后一行更改为以下内容来安排其每分钟运行一次: ``` if __name__ == "__main__": github_stars.serve( name="first-deployment", cron="* * * * *", parameters={"repos": ["PrefectHQ/prefect"]} ) ``` 您现在有一个在本地运行的进程,正在寻找已调度的 deployment! 此外,您可以从 UI 或 CLI 手动运行您的 workflow。您甚至可以响应[事件](https://docs.prefect.io/latest/automate/?utm_source=oss&utm_medium=oss&utm_campaign=oss_gh_repo&utm_term=none&utm_content=none)来运行 deployment。 ## Prefect Cloud Prefect Cloud 为现代数据企业提供 workflow 编排服务。通过每月自动化处理超过 2 亿个数据任务,Prefect 赋能各类组织——从 Progressive Insurance 等《财富》50 强领军企业到 Cash App 等创新颠覆者——提高工程生产力,减少管道错误,并降低数据 workflow 的计算成本。 在[此处](https://www.prefect.io/cloud-vs-oss?utm_source=oss&utm_medium=oss&utm_campaign=oss_gh_repo&utm_term=none&utm_content=none)阅读更多关于 Prefect Cloud 的信息,或注册[亲自试用](https://app.prefect.cloud?utm_source=oss&utm_medium=oss&utm_campaign=oss_gh_repo&utm_term=none&utm_content=none)。 ## prefect-client 如果您的用例主要涉及与 Prefect Cloud 或远程 Prefect server 通信,请查看我们的 [prefect-client](https://pypi.org/project/prefect-client/)。这是一个用于访问 Prefect SDK 中客户端功能的轻量级选项,非常适合在临时执行环境中使用。 ## 连接与贡献 加入一个由超过 25,000 名从业者组成的繁荣社区,他们使用 Prefect 解决数据挑战。Prefect 的社区建立在协作、技术创新和持续改进的基础之上。 ### 社区资源 🌐 **[探索文档](https://docs.prefect.io)** - 全面的指南和 API 参考 💬 **[加入 Slack 社区](https://prefect.io/slack)** - 与数千名从业者交流 🤝 **[为 Prefect 做贡献](https://docs.prefect.io/contribute/)** - 帮助塑造项目的未来 🔌 **[支持或创建新的 Prefect 集成](https://docs.prefect.io/contribute/contribute-integrations)** - 扩展 Prefect 的功能 📋 **[追踪开发日志](https://dev-log.prefect.io/)** - Prefect 的开源开发博客 ### 保持关注 📥 **[订阅我们的新闻通讯](https://prefect.io/newsletter)** - 获取最新的 Prefect 新闻和更新 📣 **[X](https://x.com/PrefectIO)** 和 **[Bluesky](https://bsky.app/profile/prefect.io)** - 最新动态和公告 📺 **[YouTube](https://www.youtube.com/@PrefectIO)** - 视频教程和网络研讨会 📱 **[LinkedIn](https://www.linkedin.com/company/prefect)** - 职业社交和公司新闻 您的贡献、问题和想法让 Prefect 每天都变得更好。无论您是报告 Bug、建议功能还是改进文档,您的投入对 Prefect 社区都是无价的。
标签:ETL, JavaCC, LLM工作流, MLOps, Prefect, Python, 任务调度, 分布式系统, 响应大小分析, 容错机制, 工作流引擎, 工作流编排, 开源, 批处理, 数据工程, 数据流水线, 数据科学, 数据管道, 无后门, 网络调试, 自动化, 请求拦截, 调度框架, 资源验证, 软件工程, 运维自动化, 逆向工具