はじめに
- ここでは pythonを使ったデスクトップ通知についてまとめます。
- pythonのライブラリーを用いることで簡単に実装できます。
- 以下、使用例(あくまでもこういうに使えるかもといった一例であり、もっと汎用的に使えると思います)
- ある製品のバッテリー量がリアルタイムに格納されているデータベースがあったとして、バッテリー量のxx%を切った場合に通知。
- あるサーバーのメモリ使用量がリアルタイムに格納されているデータベースがあったとして、メモリ使用量が80%を超えた場合に通知。
- うまく使うことで作業効率化にも役立てると思います。
実行環境
- Windows10
- Python3
- 使用ライブラリー
- psycopg2
- schedule
- plyer
- 使用ライブラリー
実装例
-
以下のソースコードを実行することで、次のことが実現可能です。
- 10秒ごとにDBのテーブルに対してSQLを発行して値を取得し、閾値を超えていた場合はデスクトップに通知。
-
今回は例なので、以下のような時間とデータが入っているシンプルなテーブルですが、Viewなどを使って1時間平均にしたデータにするなど様々な形に展開できると思います。
-
ソースコード
from plyer import notification
import psycopg2
import schedule
import time
def job(cur):
alert = ""
cur.execute("select data from sample order by time desc limit 1;")
rows = cur.fetchall()
hoge = rows[0][0]
if int(hoge) >= 98:
alert += "hogeが100%に近付いています。"
if alert != "":
notification.notify(
title = "警告",
message = alert,
app_name = "モニター監視"
)
print("監視を開始します。\n基準値付近になるとデスクトップ通知を行います。")
# 接続情報作成
con = psycopg2.connect("host=xxx.xxx.xxx.xxx port=xxxx dbname=xxxx user=xxxx password=xxxx")
cur = con.cursor()
# 指定時間ごとにjobを実行(今回は10秒ごと)
schedule.every(10).seconds.do(job, cur)
while True:
try:
schedule.run_pending()
time.sleep(1)
except KeyboardInterrupt:
print("中断しました。")
cur.close()
con.close()
break