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编程 #网站监控 #后端 #开发工具 #程序员 #自动化 #接口测试#效率工具

相关新闻

最新新闻

Krkrz引擎逆向工程:资源提取与修改的完整技术指南

Krkrz引擎逆向工程:资源提取与修改的完整技术指南

Krkrz引擎逆向工程:资源提取与修改的完整技术指南 【免费下载链接】KrkrzExtract The next generation of KrkrExtract 项目地址: https://gitcode.com/gh_mirrors/kr/KrkrzExtract KrkrzExtract是专为krkrz游戏引擎设计的资源提取工具,能够高效处…

2026/8/7 2:26:13
MFC SDI应用程序架构深度解析:从文档视图到消息映射的Windows GUI开发精髓

MFC SDI应用程序架构深度解析:从文档视图到消息映射的Windows GUI开发精髓

1. 从“Hello World”到“单文档”:为什么MFC SDI依然是理解Windows GUI的基石如果你在Windows平台上用C做过图形界面开发,哪怕只是浅尝辄止,大概率也听说过MFC(Microsoft Foundation Classes)的大名。它常常被贴上“古…

2026/8/7 2:26:13
Agent 架构 - 单 Agent

Agent 架构 - 单 Agent

单 Agent 架构:工具调用、记忆、规划三大组件的实现要点。 现状 单 Agent 架构是 Agent 系统中最基础的实现形态,其核心由工具调用、记忆、规划三大组件构成。工业界目前的主流实现,基本都建立在这三个组件的组合之上。 工具调用:…

2026/8/7 2:26:13
网络运维必备:8个命令搞定90%终端网络故障排查

网络运维必备:8个命令搞定90%终端网络故障排查

1. 先搞清楚这8个命令到底解决什么实际问题 网络运维,或者说网工,日常最头疼的不是配置新设备,而是处理各种“不通了”、“卡死了”、“连不上”的故障。新手面对这类问题,容易陷入两个极端:要么对着设备界面一通乱点&…

2026/8/7 2:26:13
Python GUI开发库深度对比:从Tkinter到PyQt的实战选型指南

Python GUI开发库深度对比:从Tkinter到PyQt的实战选型指南

1. 项目概述:为什么Python GUI开发值得你投入时间?如果你刚开始接触Python,可能觉得它就是个在命令行里跑脚本、处理数据的工具。但当你需要把数据处理结果直观地展示给同事,或者想为自己写个小工具提升效率时,一个带按…

2026/8/7 2:26:13
JPG、PNG、GIF、TIFF、RAW图像格式全解析:从原理到实战避坑指南

JPG、PNG、GIF、TIFF、RAW图像格式全解析:从原理到实战避坑指南

1. 从文件后缀到工作流:理解图像格式的本质如果你刚接触摄影、设计或者前端开发,面对一堆图片文件,看到.jpg、.png、.gif、.tiff这些后缀,是不是有点懵?它们看起来都是图片,为什么会有这么多不同的格式&…

2026/8/7 2:21:13