Prefect Python 数据管道编排
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/prefect-python-workflow-orchestration-data-pipelines 技能。
技能介绍
解决什么问题
在数据处理场景中,我们常遇到这些痛点:脚本执行到一半因网络波动失败,需手动重跑并跳过已成功步骤;任务间依赖关系复杂,难以直观追踪执行状态;缺乏统一的监控手段,无法快速定位异常节点。这些问题在需要定期运行、涉及多步骤的数据管道中尤为突出。
技能如何工作
Prefect 通过 装饰器驱动 的方式解决上述问题,核心能力包括:
- 动态调度:通过
@flow和@task装饰器将普通函数转化为可观测的流程与任务,自动管理依赖关系 - 弹性执行:内置自动重试机制(支持指数退避),可针对网络请求、API 调用等不稳定操作配置重试策略
- 状态持久化:所有任务状态实时存储,支持断点续跑,避免重复计算已完成步骤
- 可观测性:通过自托管服务器或云端面板查看流程执行图、任务耗时、日志输出等关键指标
关键步骤示例:
- 定义任务函数并添加
@task装饰器,声明重试策略和缓存规则 - 创建流程函数并添加
@flow装饰器,通过.submit()方法并行调度任务 - 运行流程后,通过 Web UI 实时查看各任务状态和资源消耗
适用边界
- 要求 Python 3.10+ 环境
- 自托管模式需额外部署 Prefect 服务器,云端模式需注册账号
- 适合 ETL 任务、数据清洗、批量处理等场景,不建议用于毫秒级实时流处理
- 复杂业务逻辑建议拆分为多个独立流程,避免单个流程过长导致可维护性下降
使用场景
- 数据工程师需要从多个 API 拉取数据写入数仓,某次请求超时后希望自动重试而非手动重跑整个流程
- 分析师每周定时从数据库导出销售数据生成报表,想在任务失败时收到通知并查看执行日志
- 运维人员管理一批 ETL 脚本,需要在自托管面板上看到每个步骤的耗时和状态,快速定位卡住的任务
- 开发者编写爬虫抓取 GitHub 仓库信息,希望中间结果缓存起来,避免每次运行都重复请求
适合人员
- 数据工程师,需要用 Python 搭建可靠的 ETL 管道并在失败时自动重试
- 后端开发者,定时执行数据同步任务并希望统一查看执行状态和日志
- 数据分析师,编写脚本从数据库拉数生成报表,想在任务出错时收到提醒
- 平台运维人员,负责维护一批离线数据处理脚本并监控其运行健康度