linux環境使用python定時監控資料

新系統上線,經常出現業務資料問題,需要定期比對資料的準確性,於是考慮用python寫監控指令碼,定時檢查資料準確性。

專案是java開發的,為什麼用python寫呢。主要考慮還是執行方便,主專案不可能隨意啟停,那就只能另寫一套輔助程式碼,java專案需要打包上傳,每次修改都需要重複打包,指令碼的作用註定了修改的頻率高,考慮功能不多,只是單執行緒比較資料,python比java更適合作為解決方案。

使用技術:

pymysql

- python

呼叫mysql資料庫

smtp

-

傳送告警郵件

crontab

- linux

定時執行工具

pymysql查詢資料庫

連線資料庫、關閉資料庫

db = pymysql。connect(host=host, user=user, passwd=passwd, db=db_name)

cursor = db。cursor()

#執行程式碼

cursor。close()

db。close()

pymysql操作資料庫依靠sql語句執行,正則表示式新增引數:

cursor。execute(‘select name, age from student where age > %s’, 16)

result = cursor。fetchone() # 逐條獲取查詢結果

result = cursor。fetchall() # 一次性獲取查詢結果列表

smtp傳送郵件

使用smtp傳送郵件,需要開通郵箱的smtp功能,以QQ郵箱為例(網易郵箱比較坑,容易限制傳送,QQ郵箱測試結果比較好)。

import smtplib

from email。mime。text import MIMEText

host = ‘smtp。qq。com’

user = ‘xxxxx@qq。com’

passwd = ‘xxxxxxxxxx’

# 傳送郵件

def send(receivers=[‘xxxx@qq。com’,‘xxxxx@163。com’], header=‘標題’, text=‘郵件內容’):

try:

msg = MIMEText(text, ‘html’, ‘utf-8’)

msg[‘From’] = ‘測試郵件傳送’

msg[‘To’] = ‘, ’。join(receivers)

msg[‘Subject’] = header

sobj = smtplib。SMTP_SSL(host, 465)

sobj。login(user, passwd)

sobj。sendmail(user, receivers, msg。as_string())

except Exception as e:

print(‘郵件傳送異常’, e)

else:

sobj。quit()

crontab定時執行任務

在Linux伺服器定時執行,可以直接使用linux服務工具,比python一直在後臺執行要好用。

控制檯輸入:

crontab -e # 開啟定時任務編輯介面

定時任務規則:

0/5 7-9 * * * python python-file。py

表示每天上午7點到9點時間段,每5分鐘執行一次

linux環境使用python定時監控資料