场景:凌晨两点服务挂了,没人知道,直到早上用户投诉才被发现。与其靠人盯,不如让 Python 替你 7×24 小时巡更——HTTP 探活发现异常,立刻同时推「企业微信机器人 + 邮件」两条通道,一条被限流或被丢进垃圾箱,另一条立刻兜底。本文给可直接跑的源码和部署方式。
一、为什么是双通道,而不是只发企业微信
单通道有三个绕不开的坑,逐个踩过才知道要双保险:
- 企业微信 webhook 有频控:单个机器人 key 约 20 条/分钟,突发告警容易触发限制被丢弃;且部分内网机器出不了公网,webhook 直接连不上。
- 邮件会被判垃圾邮件:用账号密码登录 SMTP 基本被拒,必须用「授权码」;QQ/163 邮箱还要开 SMTP 服务开关;内容没设 UTF-8 还会乱码。
- 抖动误报:网络瞬时抖动一次就告警,半夜被叫醒三次发现服务其实好好的——必须「连续失败 N 次」才真正告警。
双通道的核心思路:企业微信负责「快」(手机秒到),邮件负责「稳」(不依赖公网、进收件箱),任一失败自动回落另一条。
二、原理:两行代码背后的协议
企业微信机器人本质是一个 HTTP 接口,向 webhook 地址 POST 一段 JSON,群里的手机就收到消息:
POST https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=你的KEY
{\”msgtype\”:\”text\”,\”text\”:{\”content\”:\”服务异常: …\”}}
邮件走 SMTP 协议,smtplib.SMTP_SSL(host, 465) 用 SSL 端口登录后 sendmail。关键点:登录凭据是




