前言

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

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

bark

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

下载安装

iShot2022-04-04 15.14.24

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

python调用

首先需要requests包

import requests

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

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

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

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

wxpusher

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

创建应用

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

AT_yn7Xsvz**********

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

iShot2022-04-04 14.57.23

格式形如

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***********"]
}

appTokenuids替换成你的就可以了。

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

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

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

最终效果

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

IMG_1722

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

进阶

  1. 不仅适用于模型训练,可以用于任何长时间运行的程序
  2. 可以开发更多用法,例如程序运行时抛出异常,发通知。
  3. 本文仅给出python示例,如果是matlab可以参考这里,其他脚本语言也可以,只要能发送http请求。