エラーや実行完了をLINEで通知する【Python】


はじめに

機械学習などをやっていると1つのプログラムの実行に数日かかるなんてことは珍しくありません.
プログラムの実行状況が気になり,数時間おきに端末を開く.
そんな日々を送っていませんか?
そんな人のために,今回はPythonプログラムのエラーや実行完了をLINEで通知する方法を紹介します.
LINEアカウントを持っている人なら10分程度でできるので是非!

LINE Notifyの準備

通知を送るためにLINEが提供するLINE Notifyというサービスを使います.

まずは,ここからトークンを発行します.
https://notify-bot.line.me/my/

右上のログインボタンからLINEアカウントにログイン後,以下のような手順でトークンを発行&コピーします.

トークン名は好きに設定してください.今回は「実行結果通知」としています.

ここで必ずコピーしてください.

これでLINE Notifyの準備は完了です.

LINE通知用のPythonプログラム

以下のプログラムをコピペし,トークンの部分を変更するだけでOKです.
pip install requestsが必要かも)

line_notify.py
import requests

# LINEに通知する関数
def line_notify(message):
    line_notify_token = 'ここにトークンをペーストしてください'
    line_notify_api = 'https://notify-api.line.me/api/notify'
    payload = {'message': message}
    headers = {'Authorization': 'Bearer ' + line_notify_token} 
    requests.post(line_notify_api, data=payload, headers=headers)

if __name__ == '__main__':
    message = "Hello world!"
    line_notify(message)

python line_notify.pyを実行すると,LINEに"Hello world!"とメッセージが届くはずです.

エラーや実行完了を通知

あとは,例外処理などと組み合わせて通知するだけです.
試しに以下のプログラムを実行してみます.

hoge.py
import requests

# LINEに通知する関数
def line_notify(message):
    line_notify_token = 'ここにトークンをペーストしてください'
    line_notify_api = 'https://notify-api.line.me/api/notify'
    payload = {'message': message}
    headers = {'Authorization': 'Bearer ' + line_notify_token} 
    requests.post(line_notify_api, data=payload, headers=headers)

# a/bを計算する関数
def foo(a, b):
    return a / b

if __name__ == '__main__':
    try:
        ans = foo(1, 0)
    except Exception as e:
        line_notify(e)
    else:
        line_notify("finished")


foo(1, 0) を foo(1, 1) と変更して実行してみます.

正しく通知できていますね.

参考