Python 用 Doubao-Seed-Evolving 写网站监控脚本:完整代码与飞书告警、Windows 计划任务踩坑排查
Python 用 Doubao-Seed-Evolving 写网站监控脚本完整代码与飞书告警、Windows 计划任务踩坑排查一、问题背景网站半夜挂了谁在第一时间知道做开发的人基本都碰过这类问题。服务器上跑着几个对外服务平时看着正常某天半夜其中一个悄无声息挂了第二天上班才发现丢了一晚数据。等到用户或客户来投诉损失已经实打实发生了。成熟的监控 SaaS 不是没有但免费额度紧、付费按年收对只盯三五个站的个人或小团队来说偏重。本文给出一种轻量方案用大模型 Doubao-Seed-Evolving 从一个自然语言需求直接生成可运行的 Python 监控脚本覆盖 HTTP 探测、飞书告警、定时调度全流程并附两处真实踩坑的排查过程方便后来的人直接复用。二、为什么用 Doubao-Seed-Evolving 生成Doubao-Seed-Evolving 是字节跳动面向复杂工程任务推出的模型8 月 3 日刚完成第二次升级重点强化了 Coding 工程能力、Agent 检索能力和幻觉控制能力。对「自然语言需求 → 完整可运行工程」这类任务它的表现值得实测。我的做法是先把需求边界讲清楚再交给模型监控谁、怎么算异常、出事往哪发通知这三件事由人定模型只按边界施工。提示词核心几条读 targets.json 配置含 name、url、timeout逐个发 GET 请求记录是否可达、状态码、耗时不可达、状态码 ≥400、耗时超阈值三种情况任一即异常异常发飞书告警且内容含关键词没配飞书就只打印日志。三、完整 monitor.pyPython 3.10仅依赖 requests下面是可以直接复制运行的完整版本已经过实测和两处踩坑修正。#!/usr/bin/env python3# -*- coding: utf-8 -*-HTTP 目标监控脚本定期监控配置的 URL异常时通过飞书机器人发送告警importjsonimportsysimporttimefromdatetimeimportdatetimefrompathlibimportPathfromtypingimportAnyimportrequestsdefload_json_file(file_path:Path)-Any:withopen(file_path,r,encodingutf-8)asf:returnjson.load(f)defget_feishu_webhook(base_dir:Path)-str|None:config_pathbase_dir/config.jsonifnotconfig_path.exists():returnNonetry:configload_json_file(config_path)webhookconfig.get(feishu_webhook,).strip()returnwebhookifwebhookelseNoneexcept(json.JSONDecodeError,OSError)ase:print(f[警告] 读取 config.json 失败:{e})returnNonedefload_targets(base_dir:Path)-list[dict]:targets_pathbase_dir/targets.jsonifnottargets_path.exists():print(f[错误] 未找到配置文件:{targets_path})sys.exit(1)try:targetsload_json_file(targets_path)ifnotisinstance(targets,list):print([错误] targets.json 必须是 JSON 数组格式)sys.exit(1)returntargetsexceptjson.JSONDecodeErrorase:print(f[错误] 解析 targets.json 失败:{e})sys.exit(1)defcheck_target(target:dict)-dict:nametarget.get(name,未命名)urltarget.get(url,)timeouttarget.get(timeout,5)result{name:name,url:url,timeout:timeout,is_reachable:False,status_code:None,elapsed:0.0,is_error:False,error_reason:,}start_timetime.time()try:responserequests.get(url,timeouttimeout,allow_redirectsTrue,headers{User-Agent:MonitorScript/1.0})result[elapsed]round(time.time()-start_time,3)result[status_code]response.status_code result[is_reachable]Trueifresponse.status_code400:result[is_error]Trueresult[error_reason]fHTTP状态码异常:{response.status_code}elifresult[elapsed]timeout:result[is_error]Trueresult[error_reason]f响应超时: 耗时{result[elapsed]}s 阈值{timeout}sexceptrequests.exceptions.Timeout:result[elapsed]round(time.time()-start_time,3)result[is_error]Trueresult[error_reason]f请求超时: 超过{timeout}秒未响应exceptrequests.exceptions.ConnectionError:result[elapsed]round(time.time()-start_time,3)result[is_error]Trueresult[error_reason]连接失败: 无法建立网络连接exceptrequests.exceptions.RequestExceptionase:result[elapsed]round(time.time()-start_time,3)result[is_error]Trueresult[error_reason]f请求异常:{str(e)}returnresultdefsend_feishu_alert(webhook:str,result:dict)-bool:# 飞书对 markdown 类型关键词校验异常改用 text 类型 关键词监控current_timedatetime.now().strftime(%Y-%m-%d %H:%M:%S)text_content(f监控服务异常通知\n---\nf服务名称:{result[name]}\n访问地址:{result[url]}\nf错误原因:{result[error_reason]}\n状态码:{result[status_code]orN/A}\nf响应耗时:{result[elapsed]}s\n超时阈值:{result[timeout]}s\nf触发时间:{current_time}\n)payload{msg_type:text,content:{text:text_content}}try:responserequests.post(webhook,jsonpayload,timeout10,headers{Content-Type:application/json})response.raise_for_status()resp_dataresponse.json()ifresp_data.get(code,0)!0:print(f[飞书告警发送失败]{resp_data.get(msg,未知错误)})returnFalsereturnTrueexceptrequests.exceptions.RequestExceptionase:print(f[飞书告警发送异常]{e})returnFalsedefprint_log(result:dict)-None:current_timedatetime.now().strftime(%Y-%m-%d %H:%M:%S)status[异常]ifresult[is_error]else[正常]log_line(f[{current_time}]{status}| 名称:{result[name]}| fURL:{result[url]}| 状态码:{result[status_code]orN/A}| f耗时:{result[elapsed]}s)ifresult[is_error]:log_linef | 原因:{result[error_reason]}print(log_line)defmain():base_dirPath(__file__).resolve().parentprint(*60)print(fHTTP监控脚本启动 -{datetime.now().strftime(%Y-%m-%d %H:%M:%S)})print(*60)feishu_webhookget_feishu_webhook(base_dir)print([信息] 飞书告警已启用iffeishu_webhookelse[信息] 飞书告警未配置仅打印控制台日志)targetsload_targets(base_dir)print(f[信息] 成功加载{len(targets)}个监控目标)print(-*60)error_count0fortargetintargets:ifnamenotintargetorurlnotintarget:print(f[跳过] 配置项缺少 name 或 url 字段:{target})continueresultcheck_target(target)print_log(result)ifresult[is_error]:error_count1iffeishu_webhookandsend_feishu_alert(feishu_webhook,result):print(f └─ 飞书告警已发送:{result[name]})print(-*60)print(f监控完成: 共检查{len(targets)}个目标, 异常{error_count}个)print(*60)sys.exit(1iferror_count0else0)if__name____main__:main()四、配置文件与运行步骤同目录放targets.json必需和config.json可选。targets.json是监控目标的数组每项含name、url、timeout三个字段config.json只放一个feishu_webhook不配就只打控制台日志。// targets.json[{name:示例站点A,url:https://www.baidu.com,timeout:5},{name:示例站点B,url:https://github.com,timeout:10}]// config.json可选{feishu_webhook:https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxx}安装依赖与运行先pip install requests再python monitor.py即可看到带时间戳的探测日志。这个 Python 网站监控脚本对运行环境要求很低一台任意配置的云服务器或本地机器都能长期挂着。定时执行的两种常见姿势。Linux 用 crontab规则*/5 * * * *表示每 5 分钟一次完整写法*/5 * * * * /usr/bin/python3 /path/to/monitor.py /var/log/monitor.log 21日志追加到文件便于排查。Windows 则在「任务计划程序」里新建任务触发器设「每隔 5 分钟」操作指向一个run_monitor.batbat 内容第一行必须chcp 65001强制 UTF-8再调用python monitor.py否则会踩到下一节的编码坑。五、踩坑排查一飞书告警被关键词校验拦下现象脚本逻辑跑通、控制台打印异常但飞书群里一条告警都没收到后台返回「Key Words Not Found」。排查最初用 markdown 类型消息、正文含「告警」二字以为飞书关键词校验只认纯文本把关键词挪到正文第一行仍失败。根因是这台飞书机器人对 markdown 类型消息的关键词校验不稳定改成 text 类型、关键词改为「监控」后立刻成功。结论模型写的代码逻辑没错没踩中的是第三方平台的安全规则定位根因靠人。图 2飞书群里收到两条告警消息分别是 httpbin 超时和不存在域名连接失败六、踩坑排查二Windows 计划任务报 GBK 编码错误现象在终端手动运行正常挂进 Windows 计划任务每五分钟跑一次后日志报错gbk codec cant encode character。排查计划任务调起的控制台默认 GBK 编码而日志里用了 emoji 图标UTF-8 环境下没事、GBK 下直接崩。修法两步bat 入口加chcp 65001强制 UTF-8把 emoji 换成[正常]/[异常]纯文字。改完定时任务稳定运行。图 3Windows 任务计划程序里 SeedMonitor 的属性页触发器为每 5 分钟重复一次这里提醒一点脚本能跑通不算完能一直跑、出事能喊你才算真正在岗。下图是稳定运行后的日志三个目标全部正常、异常 0 个。图 4monitor.log 内容三个目标全部「正常」、异常 0 个证明定时任务稳定运行七、从脚本到接口能力沉淀的下一步脚本在本地跑着只是起点。把探测逻辑抽象成 HTTP 健康检查接口参数url timeout expected_status返回状态码、耗时、是否异常再叠告警规则、调度、历史可用率它就成了一个轻量监控能力。这样一个本机网站监控脚本就变成了可被前端大屏、运维平台直接调用的接口监控服务。想让脚本对外提供服务可封装成接口托管到 YesApi Pro 这类 API 开放平台省去自搭服务、接计费、做权限的功夫是否采用看各自基础设施情况。这种「从个人脚本到可复用产品能力」的路径正是这次用 Doubao-Seed-Evolving 做复刻最值得沉淀的部分。八、适用场景与边界这套方案最适合「盯几个对外站点、要个及时告警」的个人或小团队场景。要做企业级可用性监控至少补三件事多节点探测单台机器单出口会误报、SSL 证书到期检查、探测与告警通道解耦。它只检查「首页能不能打开」不验证页面内容和接口深层逻辑深度巡检需另写用例。把边界讲清楚比把它描述成万能工具更经得起推敲。八、总结这套网站监控方案成本极低复制配置、装一个 requests 依赖即可上手对运行环境几乎没要求。Doubao-Seed-Evolving 负责从零到一的代码生成与后续多轮改版人负责需求边界、踩坑定位和部署判断。两者配合才到得了「真在跑、真在告警」这一步。对想做接口监控、又不想一上来就上重型运维系统的个人和小团队来说这条从脚本到接口的路线值得照着复一遍跑通之后再按自己的站点数量慢慢加能力比直接买一套用不上的监控 SaaS 更划算。#Python #大模型 #AI编程 #网站监控 #后端 #开发工具 #程序员 #自动化 #接口测试#效率工具

相关新闻

如何在Unity中快速实现动态SDF?com.unity.demoteam.mesh-to-sdf完整入门指南

如何在Unity中快速实现动态SDF?com.unity.demoteam.mesh-to-sdf完整入门指南

如何在Unity中快速实现动态SDF?com.unity.demoteam.mesh-to-sdf完整入门指南 【免费下载链接】com.unity.demoteam.mesh-to-sdf A light and fast real-time SDF generator, primarily for animated characters. The dynamic SDF can be used for all sorts of VFX.…

2026/10/14 3:08:05 阅读更多 →
开发人员必读:MiniMeToken智能合约架构与代码实现原理

开发人员必读:MiniMeToken智能合约架构与代码实现原理

开发人员必读:MiniMeToken智能合约架构与代码实现原理 【免费下载链接】minime Minimi Token. ERC20 compatible clonable token 项目地址: https://gitcode.com/gh_mirrors/mi/minime MiniMeToken是一个与ERC20兼容的可克隆代币智能合约系统,它允…

2026/10/14 3:07:11 阅读更多 →
AbMole 小讲堂丨LDN-193189:BMP受体抑制剂,在骨形态发生蛋白信号与干细胞分化研究中的应用

AbMole 小讲堂丨LDN-193189:BMP受体抑制剂,在骨形态发生蛋白信号与干细胞分化研究中的应用

骨形态发生蛋白(BMP)信号通路是调控胚胎发育、组织修复和干细胞命运决定的关键通路,其过度激活与骨异位钙化、纤维化及某些肿瘤的发生发展密切相关。LDN-193189(DM-3189,AbMole,M1873)是一种选择…

2026/9/10 0:44:22 阅读更多 →

最新新闻

免费 Win11 与 Office 激活指南:MAS 脚本 4 种方式一键完成

免费 Win11 与 Office 激活指南:MAS 脚本 4 种方式一键完成

免费 Win11 与 Office 激活指南:MAS 脚本 4 种方式一键完成 【免费下载链接】Microsoft-Activation-Scripts Open-source Windows and Office activator featuring HWID, Ohook, TSforge, and Online KMS activation methods, along with advanced troubleshooting.…

2026/10/14 3:07:32 阅读更多 →
仓颉语言 Decimal 基本属性详解:sign / scale / value / precision 实战指南

仓颉语言 Decimal 基本属性详解:sign / scale / value / precision 实战指南

文档知识库教程OpenHarmony 【免费下载链接】CangjieCorpus 本仓库为仓颉编程语言语料库,聚焦 仓颉编程语言 核心知识体系,整合官方开发指南、API 文档、典型代码示例及语法规范等多维度资源,经结构化处理与专业标注,构建为支持 R…

2026/10/14 3:07:32 阅读更多 →
Wing 云服务(cloud.Service)在模拟器中的令牌(Token)绑定与端到端测试

Wing 云服务(cloud.Service)在模拟器中的令牌(Token)绑定与端到端测试

编程语言编译器云原生语言运行时 【免费下载链接】wing A programming language for the cloud ☁️ A unified programming model, combining infrastructure and runtime code into one language ⚡ 项目地址: https://gitcode.com/gh_mirrors/wi/wing 点击查看 免…

2026/10/14 3:07:32 阅读更多 →
大模型之LangGraph多轮对话记忆

大模型之LangGraph多轮对话记忆

用 LangGraph 的 Reducer,轻松搞定多轮对话记忆 做聊天机器人最头疼的是什么?是记不住上文。今天分享一个 LangGraph 的小技巧:用 Reducer 机制优雅地管理对话历史。 核心只有一行代码: messages: Annotated[Sequence[AnyMessa…

2026/10/14 3:07:32 阅读更多 →
免费三步:老 Mac 升级最新 macOS

免费三步:老 Mac 升级最新 macOS

免费三步:老 Mac 升级最新 macOS 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 一台 2015 年的 MacBook Pro,App Store 早就不给推送…

2026/10/14 3:07:32 阅读更多 →
PySide2工具栏与状态栏实战:QToolBar和QStatusBar高效开发指南

PySide2工具栏与状态栏实战:QToolBar和QStatusBar高效开发指南

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

2026/10/14 3:06:32 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/12 18:11:17 阅读更多 →