前言#
現在進行大型數值計算,或訓練機器學習模型的時間可以長達數十小時甚至數天。我們自然是希望跑完的時候能夠收到通知,這樣就不用反覆上去查看了。
查了下網上居然相關教程非常少,本文提供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 請求。