当前位置: 首页 > news >正文

如何用 Plombery 创建你的第一条 Pipeline?Task、Pipeline、Trigger 三大核心概念一次讲透

如何用 Plombery 创建你的第一条 Pipeline?Task、Pipeline、Trigger 三大核心概念一次讲透

【免费下载链接】plomberyPython task scheduler with a user-friendly web UI项目地址: https://gitcode.com/gh_mirrors/pl/plombery

Plombery 是一款带友好 Web UI 的 Python 任务调度器(task scheduler):你用几行 Python 代码定义 Pipeline,它自动帮你调度、记录日志,并提供可视化界面查看每次运行(Run)的状态与耗时。本文将带你从零创建你的第一条 Pipeline,并彻底讲透 Task、Pipeline、Trigger 三大核心概念。

快速上手:10 分钟安装 Plombery

只需 Python 3.8+ 即可运行 Plombery。官方推荐的完整安装步骤见 docs/get-started.md:

  1. 创建并激活虚拟环境:python -m venv .venv
  2. 安装 Plombery:pip install plombery
  3. 安装 ASGI 服务器(Plombery 基于 FastAPI):pip install uvicorn

安装完成后,你离第一条 Pipeline 只差一个 Python 文件。

核心概念 1:Task —— 一个带装饰器的 Python 函数

Task 是 Plombery 的最小积木:任何普通 Python 函数,加上@task装饰器,就成为一个任务。它支持同步和异步写法(函数定义见 src/plombery/pipeline/task.py):

from plombery import task, get_logger @task async def fetch_raw_sales_data(): logger = get_logger() # 日志会自动收集并展示在 Web UI logger.info("Fetching sales data...") return {"price": 99, "store_id": 3} # 返回值会传给下一个 Task

两个关键细节:

  • 日志get_logger()必须在 task 函数内部调用,日志会自动汇总到 Web UI 的运行日志页面
  • 数据传递:Pipeline 内的 Task 按顺序执行,前一个 Task 的返回值会作为位置参数传给后续 Task,天然形成数据流

核心概念 2:Pipeline —— Task 的有序编排

Pipeline 是 1 个或多个 Task 组成的执行序列,通过register_pipeline注册。最小完整示例只需几行(完整教程见 docs/create-a-pipeline.md):

from plombery import task, register_pipeline @task async def fetch_data(): return get_my_things() register_pipeline( id="my_pipeline", # 必填:唯一标识 tasks=[fetch_data], # 必填:Task 列表 )

除了idtasks,你还可以声明params(Pydantic 输入参数,Web UI 会自动生成参数表单)、namedescription等,详见 src/plombery/pipeline/pipeline.py。

核心概念 3:Trigger —— Pipeline 的启动入口

Trigger 是运行 Pipeline 的入口:可以是一个定时计划(schedule),也可以是 Web UI 上的按钮或 HTTP 接口(实现见 src/plombery/pipeline/trigger.py)。

📌即使不声明任何 Trigger,系统也会自动附加一个"Pipeline trigger",给你两个免费入口:

  • 手动按钮:首页和 Pipeline 页面都有 Run 按钮,一键触发
  • HTTP 接口:Pipeline 页面展示 Run URL,POST 请求即可程序化运行

🕘定时调度是 Plombery 最常用能力。注册 Pipeline 时传入 Trigger 列表,schedule参数支持 APScheduler 的 Cron、Interval、Date 等触发器,例如"每天运行一次":

from apscheduler.triggers.interval import IntervalTrigger from plombery import Trigger triggers=[ Trigger( id="daily", name="Daily", description="Run the pipeline every day", schedule=IntervalTrigger(days=1), ), ],

每个 Trigger 还能绑定专属params——相当于为 Pipeline 定义多个"固定参数的快捷入口",适合让不熟悉代码的同事也能安全地手动运行。完整参数用法可参考项目内置示例 examples/src/sales_pipeline.py。

运行你的第一条 Pipeline 并查看结果

在入口文件底部启动服务:

if __name__ == "__main__": import uvicorn uvicorn.run("plombery:get_app", reload=True, factory=True)

执行python src/app.py,浏览器打开http://localhost:8000即可看到:

  • Trigger 详情页:调度计划、下次运行时间、触发器健康度(近期成功/失败)、平均耗时趋势图
  • Runs 列表:每一次 Pipeline Run 的状态、开始时间、耗时
  • 运行日志:按 Task、日志级别筛选的详细日志

项目examples/目录还提供了更贴近实战的示例,比如监控 SSL 证书到期时间的 Pipeline,效果如下:

相关源码位于 examples/src/ssl_certificates.py。

总结:一句话记住三大概念

概念一句话定义
Task加了@task装饰器的 Python 函数,是 Pipeline 的基本积木
Pipeline若干 Task 组成的执行序列,用register_pipeline注册
Trigger运行 Pipeline 的入口:定时计划、HTTP 接口或 Web UI 按钮

现在你已掌握用 Plombery 创建 Pipeline 的完整思路:定义 Task → 编排 Pipeline → 配置 Trigger → 在 Web UI 上观察运行。接下来不妨去 docs/triggers.md 和 docs/tasks.md 探索更多玩法,把日常的数据同步、报表生成任务都交给它吧!

【免费下载链接】plomberyPython task scheduler with a user-friendly web UI项目地址: https://gitcode.com/gh_mirrors/pl/plombery

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4209388.html

相关文章:

  • 如何用 Android Studio 从零构建 MoneyManagerEx:JDK17 + Gradle 完整开发者构建指南
  • 12G 显存跑通 SV4D:Stability AI generative-models 从零到 4D 生成的完整路线
  • JavaScript事件循环机制详解与面试实战
  • test-case版本选择指南:理解MSRV策略与依赖锁定
  • 从数据采集到知识生长——WSaiOS-ICAI知识获取与更新流程工程研究
  • 如何本地预览 Prisma 参考文档:prisma-docs-generator serve 命令完整教程
  • 3分钟教程:ncmdump 免费把 NCM 音乐转成 MP3
  • Ardent迭代器家族源码全解:栈与队列实现4种树遍历的完整清单
  • rplidar_ros launch文件全解:12个参数配置指南与scan_mode、angle_compensate实战技巧
  • 网络安全校招岗位解析与职业规划指南
  • rosbag2 从零跑通 ROS2 录制回放:安装、录制与回放实用指南
  • JavaScript核心概念与高频面试题解析
  • 小厂前端实习面试全攻略:高频考点与实战技巧
  • 2026软件测试面试全攻略:理论与实战解析
  • 5分钟上手UIViewController-KeyboardAnimation:iOS键盘动画类别完全指南
  • 网络安全面试全攻略:技术要点与实战技巧
  • RPCS3 PS3模拟器汉化配置指南:3步让界面变成中文
  • 2026年软件测试面试趋势与自动化测试实战指南
  • Spring Boot Failed to determine driver class 根源解析
  • FreeRTOS消息队列内存机制与误用避坑指南
  • 5分钟本地跑通Superflows:Docker+Supabase开发环境搭建完整指南
  • Cactus泛基因组图谱实战:酵母图谱与HPRC人类图谱案例及panacus统计可视化
  • RocketMQ核心知识点与面试解析
  • 京东前端实习面试核心考点与优化策略
  • LobsterAI智能体开发与多模态面试模拟实战
  • JellyRefreshLayout:3个理由让这款果冻式下拉刷新组件比SwipeRefreshLayout更惊艳
  • 如何用GitHub免费托管你的播客:TheContext-Podcast的Raw RSS + Releases部署方案
  • RoMa快速入门:旋转矩阵、四元数、旋转向量与欧拉角互转全解教程
  • Kali散列密码破解实战:从哈希识别到GPU加速还原
  • SyncKit 服务器安全加固实战:JWT 认证、RBAC 权限与防 SQL 注入生产级防护指南