Python中如何实现微信监控程序运行状态
不知道大家有没有过这样的经历:
-
电脑上跑着代码,人走开了,在外面特别挂念,想知道那代码跑得怎样了…
-
写了个小程序,监控某个网页的变化,但没有比较实时的通知方式,邮件太重、短信又不好搞
在过去,这样的问题有时会困扰我。
不过现在,我可以把警告 /日志发到我的微信上。
from wxpy import get_wechat_logger
获得 Logger
logger = get_wechat_logger()
发送警告
logger.warning(‘这是一条 WARNING 等级的日志!’)
捕获可能存在的异常,并发送
try:
1 / 0
except:
logger.exception(‘又出错啦!’)
这样,不管我在哪,都可以第一时间收到程序的重要信息。

关于 wxpy
上面代码中所使用的 wxpy 模块,是我最近开发的个人微信号 API ,有微信就能用,无需申请公众号。
除了上面的 logging 功能外,还集成了一些特色功能,比如:自动聊天(利用图灵机器人)、查看共同好友,统计好友或群的性别地区分布等等。
当然,也覆盖了微信个人号的大部分基本功能。
wxpy 在设计上注重“接口的使用体验”,并配有完善的文档。
目前已开发 4 周,基本每天都有 commit 。
GitHub 主页
https://github.com/youfou/wxpy
希望更多朋友加入进来,一起挖掘更多有意思的玩法!
Python中如何实现微信监控程序运行状态
还不如弄个测试公众号,比这稳定多了
要监控Python程序在微信中的运行状态,最直接的方式是通过微信机器人库发送状态信息。这里推荐使用itchat或wxpy库,不过itchat已停止维护,建议用wechatpy或企业微信方案。
下面是一个使用wechatpy通过企业微信发送监控状态的完整示例:
import time
import psutil
from wechatpy.enterprise import WeChatClient
class WeChatMonitor:
def __init__(self, corp_id, corp_secret, agent_id):
"""初始化企业微信客户端"""
self.client = WeChatClient(corp_id, corp_secret)
self.agent_id = agent_id
def send_status(self, message):
"""发送状态消息到企业微信"""
try:
self.client.message.send_text(self.agent_id, message)
print(f"状态已发送: {message}")
except Exception as e:
print(f"发送失败: {e}")
def monitor_program(self, program_name, check_interval=60):
"""监控指定程序的运行状态"""
while True:
is_running = False
# 检查进程是否存在
for proc in psutil.process_iter(['name']):
if program_name.lower() in proc.info['name'].lower():
is_running = True
break
status = "运行中" if is_running else "已停止"
timestamp = time.strftime("%Y-%m-%d %H:%M:%S")
message = f"[程序监控]\n程序: {program_name}\n状态: {status}\n时间: {timestamp}"
self.send_status(message)
time.sleep(check_interval)
# 配置信息(需要替换为实际值)
CORP_ID = "你的企业ID"
CORP_SECRET = "你的应用Secret"
AGENT_ID = "你的应用AgentId"
# 使用示例
if __name__ == "__main__":
monitor = WeChatMonitor(CORP_ID, CORP_SECRET, AGENT_ID)
# 测试发送一条状态
monitor.send_status("程序监控服务已启动")
# 开始监控指定程序(例如监控python.exe)
monitor.monitor_program("python.exe", check_interval=300) # 每5分钟检查一次
实现要点:
-
企业微信配置:
- 注册企业微信,创建应用获取
corp_id、corp_secret和agent_id - 比个人微信更稳定,没有封号风险
- 注册企业微信,创建应用获取
-
监控逻辑:
- 使用
psutil库检测进程是否存在 - 可监控CPU/内存使用率:
psutil.cpu_percent()和psutil.virtual_memory().percent
- 使用
-
扩展功能:
# 监控资源使用情况 cpu_usage = psutil.cpu_percent(interval=1) mem_usage = psutil.virtual_memory().percent message = f"CPU使用率: {cpu_usage}%\n内存使用率: {mem_usage}%" -
异常处理增强:
def safe_monitor(self): while True: try: # 监控逻辑 pass except Exception as e: self.send_status(f"监控异常: {str(e)}") time.sleep(60)
替代方案:如果必须用个人微信,可以用wxauto或wechatbot,但稳定性较差。
总结:用企业微信API最可靠。
我弄了,用测试号推送我想要的东西,利用模版消息接口。最近用 go 重写,快完了。
发给文件传输助手会有提醒么?
http://sc.ftqq.com
推荐用这个……
用方糖不就好了
问题题外话,楼主你们都是怎么注册服务号的呢?自己注册工作室的?
全面优化接口,更有 Python 范儿
hhhhh 之前看 itchat 也有这想法
sentry?
我们是通过企业号实现的
都说了不用申请公众号
看了下 Github ,楼主应该发过帖子了吧?我还加过群,只是碍于这种微信不能长期在线,所有还是用方糖和公众号测试号吧
我当然知道,我说的是自建服务
pc 版利用文件助手发给自己
哈哈,一起来做吧
这个不错
楼主,能否在没有 X 的情况下使用啊?因为在超算上跑的程序不会给 X 啊。。。。
X server
图形界面
抱歉,原谅我这个产品汪太无知… 没考虑这种情况呢
产品会写代码……挺厉害的……
可以另外使用 console_qr 参数初始化 Bot 对象,然后再传入到 get_wechat_logger() 中
具体说明请看 http://wxpy.readthedocs.io/zh/latest/bot.html?highlight=console_qr#wxpy.Bot
看了下 core 好像还是用的 itchat
就是 itchat 套了一层。。。
目前在用 ifttt 做重要信息推送,比较方便。
是的,重点在优化接口,内部大量套用,少量重写
之前在 trending 上看见了,很厉害啊
需要一直登录网页版?模拟的就是网页端?
钉钉这么好用!
Good. Thanks.
是的
最讨厌的事就是收到监控日志了


