懒人技巧-模型训练完成时发通知到手机

前言

现在进行大型数值计算，或训练机器学习模型的时间可以长达数十小时甚至数天。我们自然是希望跑完的时候能够收到通知，这样就不用反复上去查看了。

查了下网上居然相关教程非常少，本文提供bark和wxpusher两个免费推送服务的使用方法，实现脚本跑完时自动发通知到手机或微信。

bark

bark是一款开源免费的推送服务，仅支持ios。

下载安装

进入 app 后复制如上图的链接即可

python 调用

首先需要 requests 包

Copy
import requests

在模型训练的代码块后面加上这行

Copy
ret = requests.get('https://api.day.app/8BZtwxVav***********/报警滴滴滴/测试消息')

上面链接换成你自己的，内容可以自己修改。

程序运行到这行就会发送通知到你的手机了。

wxpusher

如果是安卓手机，可以用wxpusher推送消息到微信，目前完全免费。类似的比较有名的 server 酱现在每天仅提供 5 次免费推送，不建议使用。

创建应用

微信扫码自动注册，很方便。进去后创建应用，只要填必填项就可以，创建完成后会给你一个 appToken，务必保存好。格式形如

Copy
AT_yn7Xsvz**********

应用创建完成后会显示一个二维码，一样用微信扫一下，你与应用就关联上了。然后点击左侧用户列表，复制你的 UID

格式形如

Copy
UID_VO8eFt***********

python 调用

相比于上面的bark，微信接口有一些限制，需要用json格式传输。

Copy
import requests
import json

# wxpusher
headers = {'content-type': "application/json"}
body = {
"appToken":"AT_yn7Xsvz**********",
"content":"这是一条测试消息",
"summary":"报警滴滴滴",
"contentType":1,
"topicIds":[],
"uids":["UID_VO8eFt***********"]
}

把appToken和uids替换成你的就可以了。

在模型训练的代码块后面加上

Copy
ret = requests.post('http://wxpusher.zjiecode.com/api/send/message', data=json.dumps(body), headers=headers)

这样跑完的时候就会post请求到 api，即时发送通知到你的微信了。

最终效果

非常快，基本上一执行就立刻接到通知了。

唯一美中不足的就是wxpusher受微信官方一些限制，通知没法直接显示内容，需要点进去才能查看。

进阶

不仅适用于模型训练，可以用于任何长时间运行的程序

可以开发更多用法，例如程序运行时抛出异常，发通知。

本文仅给出 python 示例，如果是 matlab 可以参考这里，其他脚本语言也可以，只要能发送 http 请求。