Prefect项目中的运行产物(Artifacts)机制详解

Prefect项目中的运行产物(Artifacts)机制详解

prefect PrefectHQ/prefect: 是一个分布式任务调度和管理平台。适合用于自动化任务执行和 CI/CD。特点是支持多种任务执行器,可以实时监控任务状态和日志。 prefect 项目地址: https://gitcode.com/gh_mirrors/pr/prefect

什么是Prefect运行产物

Prefect运行产物(Artifacts)是一种专为人类可读设计的持久化输出机制,它能够在Prefect UI中以丰富的可视化形式展示。这些产物可以作为流程和任务运行的视觉化注解,帮助开发者更好地理解和监控工作流的执行情况。

运行产物具有以下核心特点:

  • 支持多种标准化格式:表格、进度指示器、图片、Markdown文档和链接等
  • 存储在Prefect Cloud或自托管服务器中,并在UI中渲染展示
  • 能够可视化运行过程中产生的输出或副作用
  • 支持随时间推移捕获更新,形成版本历史

运行产物的典型应用场景

进度监控

对于长时间运行的任务,可以通过进度产物实时展示任务执行进度,帮助监控任务执行状态。

调试辅助

将关键数据发布为产物,便于在UI中直观查看结果生成的时间和位置。当产物不符合预期时,可以快速定位问题。

数据质量检查

在任务执行过程中发布数据质量检查结果,确保数据管道各环节的质量。产物特别适合展示性能图表,如机器学习模型训练过程。

文档记录

发布文档和示例数据,帮助跟踪工作内容和共享信息。例如,可以为重要数据添加说明性描述。

创建不同类型的运行产物

Prefect支持五种主要产物类型,每种都有特定的创建方法。

链接产物

使用create_link_artifact()函数创建链接产物,适合展示外部资源的访问链接。

from prefect.artifacts import create_link_artifact

create_link_artifact(
    key="data-source",
    link="https://example.com/dataset.csv",
    description="原始数据来源",
    link_text="数据集CSV文件"
)

最佳实践:为相关链接使用相同的key值,可以建立产物谱系,便于追踪特定主题的多个版本。

进度产物

通过create_progress_artifact()update_progress_artifact()函数创建和更新进度产物,适用于长时间运行任务的进度展示。

from prefect.artifacts import create_progress_artifact, update_progress_artifact

# 创建初始进度
artifact_id = create_progress_artifact(progress=0, description="数据处理进度")

# 更新进度
for i in range(1, 11):
    process_data_chunk(i)
    update_progress_artifact(artifact_id=artifact_id, progress=i*10)

Markdown产物

使用create_markdown_artifact()创建富文本格式的文档产物,支持Markdown语法。

report = """# 月度报告

## 关键指标
- 总销售额: $1,000,000
- 同比增长: 20%

## 区域表现
| 区域 | 销售额 |
|------|--------|
| 北美 | $600K |
| 欧洲 | $300K |
| 亚洲 | $100K |
"""

create_markdown_artifact(
    key="monthly-report",
    markdown=report,
    description="2023年10月销售报告"
)

注意:避免在多行Markdown字符串中使用缩进,这会导致渲染问题。

表格产物

通过create_table_artifact()创建表格数据产物,支持多种数据结构格式。

customer_data = [
    {'id': 1, 'name': '张三', 'score': 95},
    {'id': 2, 'name': '李四', 'score': 88}
]

create_table_artifact(
    key="top-customers",
    table=customer_data,
    description="高价值客户列表"
)

图片产物

使用create_image_artifact()展示公开可访问的图片资源。

create_image_artifact(
    image_url="https://example.com/chart.png",
    description="销售趋势图",
    key="sales-trend"
)

对于私有图片,建议使用链接产物替代。

产物管理实践

查看产物

在Prefect UI中可以查看所有产物的最新版本,并追踪特定产物的历史变更。也可以通过CLI工具查询:

# 查看特定key的产物
prefect artifact inspect my-key

# 列出所有产物
prefect artifact ls

程序化访问

在Python代码中可以通过API检索已有产物:

from prefect.artifacts import Artifact

artifact = Artifact.get("my-key")

删除产物

可以通过CLI按key或ID删除产物:

prefect artifact delete my-key
# 或
prefect artifact delete --id artifact-id

高级应用技巧

  1. 产物版本控制:为相关产物使用相同的key值,可以建立清晰的版本历史。

  2. 动态内容生成:在产物内容中使用Python的f-string等特性动态生成报告内容。

  3. 组合使用:在复杂流程中组合使用多种产物类型,如进度条+最终报告表格。

  4. 自动化管理:通过REST API实现产物的自动化创建和管理,集成到现有工作流中。

通过合理运用Prefect的运行产物机制,可以显著提升工作流的可观测性和协作效率,特别是在复杂数据处理和机器学习场景中。

prefect PrefectHQ/prefect: 是一个分布式任务调度和管理平台。适合用于自动化任务执行和 CI/CD。特点是支持多种任务执行器,可以实时监控任务状态和日志。 prefect 项目地址: https://gitcode.com/gh_mirrors/pr/prefect

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

方苹奕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值