前言#
现在进行大型数值计算,或训练机器学习模型的时间可以长达数十小时甚至数天。我们自然是希望跑完的时候能够收到通知,这样就不用反复上去查看了。
查了下网上居然相关教程非常少,本文提供bark
和wxpusher
两个免费推送服务的使用方法,实现脚本跑完时自动发通知到手机或微信。
bark#
bark是一款开源免费的推送服务,仅支持ios
。
下载安装#
进入 app 后复制如上图的链接即可
python 调用#
首先需要 requests 包
import requests
在模型训练的代码块后面加上这行
ret = requests.get('https://api.day.app/8BZtwxVav***********/报警滴滴滴/测试消息')
上面链接换成你自己的,内容可以自己修改。
程序运行到这行就会发送通知到你的手机了。
wxpusher#
如果是安卓手机,可以用wxpusher推送消息到微信,目前完全免费。类似的比较有名的 server 酱现在每天仅提供 5 次免费推送,不建议使用。
创建应用#
微信扫码自动注册,很方便。进去后创建应用,只要填必填项就可以,创建完成后会给你一个 appToken,务必保存好。格式形如
AT_yn7Xsvz**********
应用创建完成后会显示一个二维码,一样用微信扫一下,你与应用就关联上了。然后点击左侧用户列表,复制你的 UID
格式形如
UID_VO8eFt***********
python 调用#
相比于上面的bark
,微信接口有一些限制,需要用json
格式传输。
import requests
import json
# wxpusher
headers = {'content-type': "application/json"}
body = {
"appToken":"AT_yn7Xsvz**********",
"content":"这是一条测试消息",
"summary":"报警滴滴滴",
"contentType":1,
"topicIds":[],
"uids":["UID_VO8eFt***********"]
}
把appToken
和uids
替换成你的就可以了。
在模型训练的代码块后面加上
ret = requests.post('http://wxpusher.zjiecode.com/api/send/message', data=json.dumps(body), headers=headers)
这样跑完的时候就会post
请求到 api,即时发送通知到你的微信了。
最终效果#
非常快,基本上一执行就立刻接到通知了。
唯一美中不足的就是wxpusher
受微信官方一些限制,通知没法直接显示内容,需要点进去才能查看。
进阶#
- 不仅适用于模型训练,可以用于任何长时间运行的程序
- 可以开发更多用法,例如程序运行时抛出异常,发通知。
- 本文仅给出 python 示例,如果是 matlab 可以参考这里,其他脚本语言也可以,只要能发送 http 请求。