# SeoPythonGuardianApplication **Repository Path**: VGfirst/seo-python-guardian-application ## Basic Information - **Project Name**: SeoPythonGuardianApplication - **Description**: Python 守护控制台 // 进程与服务:Python 子进程管理器、心跳 HTTP 服务器 , // 管理 Python 进程的启动/重启/停止与看门狗逻辑(只检查心跳超时) - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-11 - **Last Updated**: 2025-12-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SeoPythonGuardianApplication ```````` # Python 守护控制台(SeoPythonGuardianApplication)项目介绍 本文档整理项目的功能、用途、技术方案与架构设计,便于对外展示与归档。 ## 一、项目背景与用途 - 用途:在 Windows 上长期稳定运行指定的 Python 服务脚本,通过心跳机制进行健康监控与异常自愈,提供可视化控制台与托盘菜单以便运维与查看日志。 - 场景:例如高并发采集、SEO 模拟访问、长期任务处理的 Python 服务需要稳定运行并在异常时自动重启。 ## 二、核心功能 1. Python 服务守护 - 指定 Python 解释器与脚本路径,一键启动/停止。 - 本地轻量 HTTP 心跳监听(默认端口 8123),接收脚本上报的状态信息。 - 心跳过期自动重启(默认阈值 10 分钟),脚本主动上报错误或重启意图时立即重启。 - 每日自动重启(运行满 1 天触发)。 2. 日志管理 - 文件日志:所有事件与心跳内容写入 `Logs/service.log`(或自定义路径)。 - UI 日志:控制台实时输出,最多保留 200 行,自动滚动到最新,防止 UI 内存膨胀。 3. 可视化控制台(WPF) - 配置卡片:Python 解释器、脚本与日志路径选择。 - 状态卡片:展示服务状态与基本指标。 - 日志卡片:实时查看运行日志与进度。 - 顶部自定义标题栏、窗口控制按钮、主题样式一致化。 4. 托盘菜单(HandyControl) - 快捷操作:打开主界面、退出应用。 - 托盘提示与双击交互。 ## 三、技术方案 - 桌面框架:WPF(.NET 9,C# 13) - UI 库:HandyControl(托盘图标、交互触发) - 进程管理:自定义 `PythonServiceManager`(启动/停止/重启、看门狗逻辑) - 心跳服务:`HeartbeatHttpServer` 在本机端口监听 `/status`,解析并分发心跳数据 - 日志:`FileLogger` 负责追加写入文本日志;UI 日志采用并发队列 + 定时批量刷新 - 编码兼容:注册 `CodePagesEncodingProvider`,并对含替换字符的文本进行 UTF-8 规范化处理 ## 四、架构设计 - UI 层(WPF): - `MainWindow.xaml`:主题样式、配置与控制卡片、日志展示、托盘菜单。 - `MainWindow.xaml.cs`:事件处理、心跳响应、日志刷新、窗口交互。 - 服务层: - `PythonServiceManager`:封装进程生命周期、重启策略、与 UI/日志事件。 - `HeartbeatHttpServer`:监听心跳、触发 UI 状态刷新与自愈动作。 - 日志与模型: - `FileLogger`:追加写入日志文件。 - `HeartbeatPayload` 等模型:心跳数据结构。 数据与事件流: - Python 脚本 → HTTP 心跳上报 → `HeartbeatHttpServer` → UI 状态更新 + 守护逻辑(必要时 `Restart`) - `PythonServiceManager` → 进程事件与日志 → 文件日志 + UI 并发缓冲 → `MainWindow` 定时刷入 TextBox(保留 200 行) ## 五、关键设计细节 - 心跳自愈: - 心跳过期(>10 分钟)自动重启。 - 脚本状态为 `error` 或主动请求重启(`should_restart_after_seconds > 0`)立即重启。 - UI 性能优化: - 并发队列缓冲日志;200ms 定时批量刷新;控件内只保留 200 行文本并重写,避免无限增长。 - `TextChanged` 事件内 `CaretIndex` + `ScrollToEnd`,确保始终显示最新内容。 ## 六、部署与使用 1. 配置 Python 解释器与脚本路径。 2. 启动服务后,确保脚本向 `http://localhost:8123/status` 上报心跳(包含运行状态、PID、统计信息等)。 3. 通过控制台与托盘菜单进行日常运维与查看日志。 ## 七、后续规划 - 可配置的心跳端口与阈值(UI 设置页)。 - 更丰富的状态图表与报警机制(托盘提醒/系统通知)。 - 多脚本守护与分组管理。 --- 如需在博客中展示,可在文末补充:心跳接口示例、Python 心跳上报代码片段、运行截图。