Help us understand the problem. What is going on with this article?

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

はじめに

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

LINE Notifyの準備

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

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

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

手順1.png

手順2.png

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

ここで必ずコピーしてください.
手順4.png

これで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")

実行結果1.jpeg
foo(1, 0) を foo(1, 1) と変更して実行してみます.
実行結果2.jpeg
正しく通知できていますね.

参考

Jun-T
Python / MachineLearning / DeepLearning / etc...
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away