新闻详情

新闻详情

首页 / 资讯中心 / 详情

工作流走到一半就报错,Mastra 的重试策略怎么配

发布时间:2026/9/4 14:23:19来源:尧图网络
工作流走到一半就报错,Mastra 的重试策略怎么配
工作流走到一半就报错Mastra 的重试策略怎么配【免费下载链接】mastraMastra is the modern TypeScript framework for AI-powered applications and agents.项目地址: https://gitcode.com/GitHub_Trending/ma/mastra凌晨两点工作流在第 4 步调外部 API 超时整条流水线从头重跑。你加过重试但 5 次全打在同一个瞬时故障上还不如不试。Mastra 工作流把重试做成 step 级别的retryPolicy矛盾点在于配少了兜不住抖动配粗了会把本该直接失败的错误也陪跑到底。下面按能跑起来 → 配得准 → 配得住的顺序讲。最短能跑的重试配置const step createStep({ id: fetch-data, inputSchema: z.object({ url: z.string() }), outputSchema: z.object({ data: z.unknown() }), retryPolicy: { maxAttempts: 3, retryInterval: 1000, }, execute: async ({ $: { input }, context }) { const res await fetch(input.url); if (!res.ok) throw new Error(fetch failed: ${res.status}); return { data: await res.json() }; }, });id是步骤的唯一标识重试记录和追踪都挂在它上面。retryPolicy.maxAttempts是含首次在内的总尝试次数。retryInterval是每次尝试之间的间隔毫秒数。这段能兜住网络抖动但如果你要区分哪些错该重试、哪些该直接挂往下看。不同的错配不同的重试网络类错误最常见连接被重置、DNS 抖动、网关返回 502 或 503。这类错误的特征是再试一次环境可能就好了错误本身不携带业务含义且通常几秒内自愈。判断标准瞬时的、和环境状态相关的错误 → 重试错误信息里带着业务语义的 → 直接失败。数据校验和业务规则错误是另一类schema 校验不过、必填字段缺失、状态机不允许这次操作。这类错误由输入决定同样的输入重试 100 次结果也一样只会把失败日志刷得更多。判断标准由输入数据决定的错误 → 直接失败别浪费次数。限流和资源类错误介于两者之间429、配额用尽、后端过载。它和 502 不同你每次重试都在给一个已经喊别来了的服务加压间隔太短的连发重试会把它按得更死。判断标准429、配额类错误 → 可以重试但必须拉开间隔且次数要少持续性过载 → 直接失败并告警。从兜住单次失败到搭一条恢复链路基础重试瞬时网络抖动的场景上面那段配置就够了。maxAttempts给 3 左右比较稳再多基本是自我安慰因为同一环境故障很少在第 4 次才恢复。注意它是总次数而非重试次数3 表示首次失败后最多再试 2 次。条件重试要按错误类型分流就别让所有错误共享同一份策略。思路是在execute里把错误打标签让上层能读到再决定去留或者干脆在 step 内部对可恢复错误做一次有限重试把不可恢复的抛出execute: async ({ $: { input }, context }) { const res await fetch(input.url); if (res.status 429) { throw new Error(rate_limited); // 由上层决定是否重试 } if (!res.ok) throw new Error(fetch failed: ${res.status}); return { data: await res.json() }; }错误分类这一步是后面所有策略的地基分不准重试只是把失败放大。重试耗尽后的降级或补偿把每次尝试都当成会失败来设计maxAttempts用完之后流程要有去处。最省事的做法是把入参和最后一次错误写进一张失败表或死信队列由人工或补偿任务后续处理对可部分完成的任务降级到缓存数据或默认值同时把降级事件打点出来。关键是重试耗尽不能成为黑洞得有人能看到它发生。生产环境踩过的坑现象重试配了 5 次结果每次故障都精准把下游限流打满。根因是 429 被和 502 归进同一份重试策略连发重试等于帮下游把过载固化成了持续故障。解法是把 429 单列出来间隔拉长、次数砍半并给下游一个明确的可恢复信号再试。现象线上看执行记录某 step 的尝试次数是 1却超时 30 秒才失败重试一次没触发。根因是超时发生在execute里的 await 中没有转成 step 层面的失败重试策略压根没进场。解法是给 fetch 加AbortSignal.timeout把超时显式抛出去让retryPolicy能感知到它。重试没生效按这个顺序查确认retryPolicy挂在出错的 step 上看错误的分类是否在重试覆盖范围内翻执行日志确认尝试次数和间隔是否触发检查依赖服务本身是否可用重试是兜底手段不是设计缺陷的补丁。先让错误被正确分类重试策略才有意义。【免费下载链接】mastraMastra is the modern TypeScript framework for AI-powered applications and agents.项目地址: https://gitcode.com/GitHub_Trending/ma/mastra创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

3 步搞定 mlx.launch 本地调试:从 SSH 免密到多后端切换的完整指南 2026/9/4 15:23:46

3 步搞定 mlx.launch 本地调试:从 SSH 免密到多后端切换的完整指南

3 步搞定 mlx.launch 本地调试:从 SSH 免密到多后端切换的完整指南 【免费下载链接】mlx MLX: An array framework for Apple silicon 项目地址: https://gitcode.com/GitHub_Trending/ml/mlx MLX 是苹果硅芯片专用的数组框架,mlx.launch 是它自带…

阅读更多 →
数字员工驱动企业数字化转型,深入剖析语音智能体的应用优势与价值 2026/9/4 15:23:46

数字员工驱动企业数字化转型,深入剖析语音智能体的应用优势与价值

数字员工在企业中扮演着越来越重要的角色,特别是在优化业务流程、降低成本和提升效率方面。语音智能体作为一种先进的数字员工解决方案,通过自动化处理客户沟通、市场推广和数据分析等任务,有效地减少了人力资源的使用。传统上,企…

阅读更多 →
Bad-Licenses:把开源许可证写成段子的仓库 2026/9/4 15:23:46

Bad-Licenses:把开源许可证写成段子的仓库

Bad-Licenses:把开源许可证写成段子的仓库 【免费下载链接】czkawka Multi functional app to find duplicates, empty folders, similar images etc. 项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka 开源自带一个让人皱眉的传统:许可…

阅读更多 →
微信聊天记录导出成 Word、CSV、HTML:WeChatMsg 3 步出文件,顺带生成年度报告 2026/9/4 15:23:46

微信聊天记录导出成 Word、CSV、HTML:WeChatMsg 3 步出文件,顺带生成年度报告

微信聊天记录导出成 Word、CSV、HTML:WeChatMsg 3 步出文件,顺带生成年度报告 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://git…

阅读更多 →
Label Studio 源码开发实战:数据标注工具如何安装、跑通与二次开发 2026/9/4 15:23:46

Label Studio 源码开发实战:数据标注工具如何安装、跑通与二次开发

Label Studio 源码开发实战:数据标注工具如何安装、跑通与二次开发 【免费下载链接】label-studio Label Studio is a multi-type data labeling and annotation tool with standardized output format 项目地址: https://gitcode.com/GitHub_Trending/la/label-s…

阅读更多 →
技术博客创作指南:合规选题与工具链实战 2026/9/4 15:20:45

技术博客创作指南:合规选题与工具链实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞