笔者所在公司项目的报警信息会经过钉钉发送到群组或我的,这样若是服务出现了问题咱们都会第一时间收到提醒并进行处理。python
某日从钉钉收到报警信息的我突发奇想,若是本身的项目也能在出现问题的第一时间经过社交工具通知我岂不美 ( sang ) 滋 ( xin )滋( bing ) ( kuang )。git
经过微信公众平台进行报警很容易,申请公众平台后写个报警后台或者使用企业微信进行接口信息发送。但无论是公众平台仍是企业微信对于普通用户的入口太深,并且我的申请还须要提交资料等等一系列事情,显然不是我想要的结果。github
以前 web 版微信的协议已经有大神解析过并封装了工具,以后又有优秀的做者不断完善封装了更好用的微信我的号接口。web
利用微信我的号接口只要是个微信号就能担当发送日志警报的重任,不只能够发送到我的同时还能发送到群组。服务器
可是全部微信机器人都是本身主动运行,注册会话,没有办法接收外部程序的日志或报警,所以我就依托 wxpy 写了 wechat_sender。微信
wechat_sender 是基于 wxpy 和 tornado 实现的一个能够将你的网站、爬虫、脚本等其余应用中各类消息 (日志、报警、运行结果等) 发送到微信的工具。微信公众平台
使用 wechat_sender 很简单,只须要有我的微信号,而后用我的微信号启动 wechat_sender 服务。ide
pip install wechat_sender复制代码
from wxpy import *
from wechat_sender import *
bot = Bot() # 这里会扫码登陆,若是在服务器中请使用 console_qr 参数
listen(bot)
# 以后 wechat_sender 将持续运行等待接收外部消息复制代码
from wechat_sender import Sender
Sender().send('Hello From Wechat Sender')
# Hello From Wechat Sender 这条消息将经过 1 中登陆微信的文件助手发送给你复制代码
固然,wechat_sender 支持 添加 logging handler 的方式直接继承进已有的项目中,例如个人我的的网站、爬虫脚本等,没必要修改之前的代码,只须要在 logger 中增长一个 wechat_sender 的 loghandler 就能够把相关日志直接发送到微信中。tornado
举个栗子:工具
# spider.py
# 假如在一个爬虫脚本,咱们想让此脚本的警告信息直接发到微信
# 记得要先用 listen 运行 wechat_sender 服务
import logging
from wechat_sender import LoggingSenderHandler
logger = logging.getLogger(__name__)
# spider code here
def test_spider():
...
logger.exception("EXCEPTION: XXX")
def init_logger():
sender_logger = LoggingSenderHandler('spider', level=logging.EXCEPTION)
logger.addHandler(sender_logger)
if __name__ == '__main__':
init_logger()
test_spider()复制代码
最后相似效果是这样滴:
固然,wechat_sender 不只能够用来发送日志和警报,你也能够把他当作日程、会议提醒的利器。
wechat_sender 提供了周期消息和延时消息的功能:
# coding: utf-8
import datetime
from wechat_sender import Sender
sender = Sender()
time = datetime.datetime.now()+datetime.timedelta(hours=1)
sender.delay_send(content="测试内容", time=time, title="测试标题", remind=datetime.timedelta(minutes=59))复制代码
若是返回正常,1 分钟后你将收到这条消息时间是 1 小时后的消息提醒:
#标题:测试标题
#时间:2017-06-07 12:56:16
#内容:延迟消息测试复制代码
做为一只猿,颈椎神马的须要保护好,公司提供了理疗服务,但无奈名额有限,每次预定都很困难,因此我决定写个监控脚本,当有预定名额时经过微信将可预定地址发给我。
写好监控脚本,而后部署到服务器 celery 周期任务中,每隔 1 分钟进行一次查询,同时在服务器上启动 wechat_sender 服务。
晚上打完球看手机收到了 阿绿( wechat_sender ) 发来的消息,果断去预定一发。
扫描二维码,调戏阿绿。验证信息输入 'wechat_sender' 或 '加群' 进入微信交流群尝试更多玩法
项目主页:github.com/bluedazzle/…
详细文档:wechat-sender.readthedocs.io/zh_CN/lates…