AI多Agent协作系统实战(十):同一份报告刷屏3小时——Cron定时任务的“幽灵重复“之谜
系列第10篇 | 为什么心跳报告每隔5分钟就重复发送同一份内容追踪一个隐藏在时间格式中的Bug前言今天凌晨发现飞书群里每隔5分钟就收到一条相同的心跳报告持续了3个多小时。内容一模一样任务状态一模一样就像一个幽灵在重复发送同一条消息。这到底是怎么发生的为什么定时任务会重复执行为什么节流throttle机制没有生效追踪下去发现了一个隐藏在时间格式中的致命Bug。一、事件经过1.1 发现报告重复用户发消息“怎么一直在重复的报这个啥问题”报告内容【小密统筹报告 06-30 07:02】 整体进度0/1 0% | # | 任务ID | 完善内容 | 开发 | 测试 | |---|--------|----------|------|------| | 1 | FIX-SERVICE-CREATE-BOTTOM-GAP-COLOR-0629-V3 | 工单创建底部间距颜色V3修复 | ⏳ | - |每隔5分钟就发一次从07:02开始一直持续到10点多。1.2 检查Cron Job检查心跳cronjobcronjob list发现cronjob正常运行每5分钟触发一次。但问题是为什么每次触发都输出相同的内容1.3 检查节流机制心跳脚本有节流逻辑# 检查节流文件throttle_file/tmp/hermes-heartbeat-throttleifos.path.exists(throttle_file):withopen(throttle_file,r)asf:last_runfloat(f.read().strip())iftime.time()-last_run300:# 5分钟内不重复returnNone理论上5分钟内不应该重复输出。但实际却重复了。1.4 发现时间格式Bug检查节流文件cat/tmp/hermes-heartbeat-throttle输出20260630_001831这是一个字符串不是时间戳问题根源节流文件存储的是字符串格式的时间20260630_001831而不是Unix时间戳1782774517。last_runfloat(20260630_001831)# ValueError!float()无法解析这个字符串抛出异常。异常被try-except捕获节流检查被跳过每次都执行。1.5 修复Bug修复节流逻辑# 修复前throttle_file/tmp/hermes-heartbeat-throttleifos.path.exists(throttle_file):withopen(throttle_file,r)asf:last_runfloat(f.read().strip())iftime.time()-last_run300:returnNone# 修复后throttle_file/tmp/hermes-heartbeat-throttleifos.path.exists(throttle_file):try:withopen(throttle_file,r)asf:contentf.read().strip()# 兼容两种格式时间戳和字符串ifcontent.isdigit():last_runfloat(content)else:# 字符串格式转换为时间戳fromdatetimeimportdatetime last_rundatetime.strptime(content,%Y%m%d_%H%M%S).timestamp()iftime.time()-last_run300:returnNoneexceptException:pass# 解析失败跳过节流同时修复写入节流文件的代码确保写入Unix时间戳# 修复前withopen(throttle_file,w)asf:f.write(datetime.now().strftime(%Y%m%d_%H%M%S))# 修复后withopen(throttle_file,w)asf:f.write(str(time.time()))二、技术分析2.1 节流机制的原理Cron触发 → 检查节流文件 → ├── 文件存在且5分钟 → 跳过 └── 文件不存在或5分钟 → 执行 → 写入节流文件2.2 Bug的传播链时间格式字符串 → float()解析失败 → 异常被捕获 → 节流检查被跳过 → 每次都执行 → 报告重复2.3 为什么持续3小时Cron每5分钟触发一次每次触发都输出报告用户没有及时发现直到用户手动检查才发现三、经验总结3.1 时间格式要统一内部计算用Unix时间戳time.time()存储和显示用ISO格式datetime.now().isoformat()不要混用两种格式3.2 异常处理要谨慎# ❌ 错误异常被静默吞掉try:last_runfloat(content)except:pass# 节流失效但没有日志# ✅ 正确异常要记录日志try:last_runfloat(content)exceptExceptionase:logger.warning(f节流文件解析失败:{e})# 可以选择跳过节流但要记录3.3 节流机制要健壮支持多种时间格式解析失败时有默认行为记录日志便于排查3.4 监控重复输出检测短时间内相同内容的重复输出超过阈值时报警自动暂停重复的cronjob四、涉及文件文件修改内容xiaomi_heartbeat_check.py修复节流逻辑兼容多种时间格式throttle_file确保存储Unix时间戳

相关新闻

Python实现轻量级IP防火墙:从原理到实战的网络安全防护

Python实现轻量级IP防火墙:从原理到实战的网络安全防护

1. 项目概述与核心价值 最近在梳理自己负责的几个Web应用的安全基线时,我重新审视了服务器层面的防护策略。很多开发者,尤其是中小型项目的负责人,往往把安全重心放在应用层的漏洞扫描和代码审计上,这当然没错,但服务器…

2026/8/12 20:06:24 阅读更多 →
网盘直链下载助手完整指南:告别限速困扰,9大平台一键获取真实下载地址

网盘直链下载助手完整指南:告别限速困扰,9大平台一键获取真实下载地址

网盘直链下载助手完整指南:告别限速困扰,9大平台一键获取真实下载地址 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里…

2026/8/12 20:06:24 阅读更多 →
CentOS下安装MySQL8.0完整指南

CentOS下安装MySQL8.0完整指南

一、安装方式对比 安装方式适用场景优点缺点包管理器安装 (apt/yum/dnf)快速部署、追求稳定性、新手友好自动处理依赖、配置简单、易于升级维护版本可能较旧、定制化程度低手动编译安装需要特定版本、深度定制、学习原理版本可控、性能优化灵活、功能模块可选步骤繁琐、依赖管…

2026/8/12 20:06:24 阅读更多 →

最新新闻

pi-web本地化配置:轻松适应不同地区的设置指南

pi-web本地化配置:轻松适应不同地区的设置指南

pi-web本地化配置:轻松适应不同地区的设置指南 【免费下载链接】pi-web Web UI for the pi coding agent 项目地址: https://gitcode.com/GitHub_Trending/pi/pi-web pi-web是一款功能强大的编码代理Web界面,支持通过本地化配置来适应不同地区的语…

2026/8/12 21:40:22 阅读更多 →
Borland C++ 3.1深度解析:从经典IDE到现代系统复活指南

Borland C++ 3.1深度解析:从经典IDE到现代系统复活指南

1. 项目概述:为什么我们今天还要聊Borland C 3.1?如果你是在90年代中后期开始接触编程的,那么Borland C 3.1这个名字,大概率会像一把钥匙,瞬间打开你尘封的记忆。在那个Windows 95刚刚崭露头角、奔腾处理器还是高端代名…

2026/8/12 21:40:22 阅读更多 →
learning-python-2896241项目完全解析:从零基础掌握Python编程核心技能

learning-python-2896241项目完全解析:从零基础掌握Python编程核心技能

learning-python-2896241项目完全解析:从零基础掌握Python编程核心技能 【免费下载链接】learning-python-2896241 This repository is for the Linkedin Learning course: Learning Python 项目地址: https://gitcode.com/gh_mirrors/le/learning-python-2896241…

2026/8/12 21:40:22 阅读更多 →
mcp-gsc Docker部署指南:打造远程可用的GSC AI分析服务

mcp-gsc Docker部署指南:打造远程可用的GSC AI分析服务

mcp-gsc Docker部署指南:打造远程可用的GSC AI分析服务 【免费下载链接】mcp-gsc Google Search Console Insights with Claude AI for SEOs 项目地址: https://gitcode.com/gh_mirrors/mc/mcp-gsc mcp-gsc是一款结合Google Search Console与Claude AI的SEO分…

2026/8/12 21:40:22 阅读更多 →
GLM-ASR-Nano vs 商业API:成本降低90%的开源替代方案选型指南

GLM-ASR-Nano vs 商业API:成本降低90%的开源替代方案选型指南

GLM-ASR-Nano vs 商业API:成本降低90%的开源替代方案选型指南 【免费下载链接】GLM-ASR GLM-ASR-Nano: A robust, open-source speech recognition model with 1.5B parameters 项目地址: https://gitcode.com/gh_mirrors/gl/GLM-ASR GLM-ASR-Nano是一款拥有…

2026/8/12 21:40:22 阅读更多 →
OVN分布式网络:构建跨节点虚拟网络的终极指南

OVN分布式网络:构建跨节点虚拟网络的终极指南

OVN分布式网络:构建跨节点虚拟网络的终极指南 【免费下载链接】ovn Open Virtual Network 项目地址: https://gitcode.com/gh_mirrors/ov/ovn OVN(Open Virtual Network)是一个强大的开源项目,专为构建跨节点虚拟网络而设计…

2026/8/12 21:39:22 阅读更多 →

日新闻

Ubuntu 22.04安装与使用tree命令:高效管理Linux目录结构

Ubuntu 22.04安装与使用tree命令:高效管理Linux目录结构

1. 为什么需要一个“目录树”工具?在Linux世界里,尤其是Ubuntu这样的发行版,命令行是很多人的主战场。我们每天都要和文件、目录打交道。ls命令是查看目录内容的首选,它简洁、高效,能列出文件名、权限、大小等关键信息…

2026/8/12 9:33:34 阅读更多 →
博思AI智能体:意图识别、思考链与性能优化的工程实践

博思AI智能体:意图识别、思考链与性能优化的工程实践

在AI应用从“能用”走向“好用”的进程中,系统的响应速度、决策透明度与高并发稳定性是决定用户体验的关键。博思AI智能体近期完成了一次重要的专项优化,聚焦于意图识别、思考链展示与全链路压测三大核心领域,将系统从功能实现推向了工程卓越…

2026/8/12 9:33:34 阅读更多 →
子代理架构:AI智能体任务分解与协同执行的核心原理与实践

子代理架构:AI智能体任务分解与协同执行的核心原理与实践

1. 项目概述:为什么我们需要“子代理”?最近在折腾各种AI应用和自动化流程时,我越来越频繁地遇到一个瓶颈:单个AI智能体(Agent)的能力边界。无论是处理复杂的多步骤任务,还是需要同时调用多个专…

2026/8/12 9:33:34 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/12 1:11:09 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/12 1:11:09 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/12 1:11:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/11 17:09:45 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/12 1:11:10 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/11 17:09:45 阅读更多 →