如何用 prefect flow-run retry 手动重跑 Prefect 中失败的 flow run
如何用 prefect flow-run retry 手动重跑 Prefect 中失败的 flow run【免费下载链接】prefectPrefect is a workflow orchestration framework for building resilient data pipelines in Python.项目地址: https://gitcode.com/GitHub_Trending/pr/prefect当一个 flow run 以FAILED或CANCELLED状态结束时除了等待调度或手动重新触发一次全新的 runPrefect 3 提供了prefect flow-run retry命令对同一个 flow run 直接重新执行。重跑后该 flow run 保留原有的 ID 和参数run_count递增。这篇文章说明如何找到失败的 flow run、执行手动重跑以及重跑后如何验证结果。以下内容基于 Prefect v3 文档根据 3.6 版本发布说明prefect flow-run retry命令是在 3.6.82025-12-24 发布中新增的低于该版本的 Prefect 没有这条命令。前提条件已安装 Prefect且 CLI 能连接到正在运行的 Prefect Server本地或自托管。如果要重跑的是通过 deployment 创建的 flow run重跑后它的状态会变为Scheduled由 worker 领取执行因此需要有 worker 在运行。worker 的配置与启动方式见 worker 概念文档。第一步找到需要重跑的 flow run先用prefect flow-run ls按状态筛出失败的 flow run拿到它的名字或 UUIDprefect flow-run ls --state FAILEDprefect flow-run ls支持的选项来自 CLI 参考--state按 flow run 的状态名过滤例如--state Running--state-type按状态类型过滤例如--state-type FAILED--flow-name只看某个 flow 的 run--limit限制列出数量--output json以 JSON 输出便于脚本处理。注意区分两件事状态名name与状态类型type是不同的过滤维度文档示例中--state Running --state late表示按状态名和状态类型组合过滤。第二步执行 retry 命令命令格式为prefect flow-run retry [OPTIONS] ID_OR_NAMEflow run 可以用 UUID 或名字指定。根据 flow run 的来源分两种情况。有 deployment 的 flow run直接给出 flow run 的名字prefect flow-run retry adventurous-crocodileadventurous-crocodile是文档中的示例名请替换为flow-run ls输出里你的 flow run 名字。执行后该 flow run 的状态变为Scheduled随后由 worker 领取并执行。没有 deployment 的本地 flow run通过flow.run等方式在本地创建、没有关联 deployment 的 flow run必须用--entrypoint指向 flow 代码prefect flow-run retry adventurous-crocodile --entrypoint ./flows/my_flow.py:my_flow--entrypoint的格式是path/to/file.py:flow_function_name即“包含 flow 的文件路径:flow 函数名”路径与函数名需替换为你自己的。提供--entrypoint后flow 会在当前进程中立即执行而不是等待 worker。多个 flow run 同名时如果多个 flow run 共用同一个名字用名字无法区分必须改用 UUIDprefect flow-run retry a1b2c3d4-e5f6-7890-abcd-ef1234567890该 UUID 为文档示例替换为实际 flow run 的 ID。验证重跑结果状态变化deployment 场景下重跑后 flow run 状态应变为Scheduled由 worker 领取执行。可以用prefect flow-run inspect ID查看该 flow run 的详情加--web可以直接在浏览器中打开该 flow run。等待终态prefect flow-run watch ID会持续观察该 flow run 直到它到达终态可选--timeout指定超时秒数prefect flow-run watch a1b2c3d4-e5f6-7890-abcd-ef1234567890 --timeout 300查看日志prefect flow-run logs ID查看该 flow run 的日志支持--head/--tail默认各 20 条--num-logs可调整和--reverse最新日志排在最前prefect flow-run logs a1b2c3d4-e5f6-7890-abcd-ef1234567890 --tail --reverserun_count文档说明重跑后 flow run 保留原 ID 和参数、run_count递增可以在inspect的输出中确认次数变化。本地--entrypoint场景下flow 在当前进程中立即执行进程内的运行结果与日志即为执行反馈执行结束后同样可用watch/inspect确认最终状态。边界与限制--entrypoint是“没有关联 deployment 的 flow run”的必填项有 deployment 的 flow run 则无需提供。同名 flow run 必须用 UUID 消歧用名字会失败或被要求指定 UUID。官方 how-to 指南表述为可重跑 “failed or cancelled” flow runCLI 参考的措辞是 “failed or completed”即已完成状态的 flow run 也可以被 retry两者以命令实际接受的当前状态为准。手动重跑与代码级自动重试是两回事在 flow/task 上用retries、retry_delay_seconds等参数配置的是异常抛出时的自动重试见自动重试文档prefect flow-run retry是你主动对已结束的一次 flow run 发起的重新执行二者可以并存、互不替代。更多细节可参考 手动重跑 flow run 指南和 prefect flow-run 命令参考其中还包含inspect、ls、cancel、delete、execute等相邻命令。【免费下载链接】prefectPrefect is a workflow orchestration framework for building resilient data pipelines in Python.项目地址: https://gitcode.com/GitHub_Trending/pr/prefect创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考