python程序报错自动发送到QQ邮箱
import datetime
import ssl
import smtplib
import time
from email.message import EmailMessage
import psutil
def bind_process(path_lst):
if type(path_lst) != list:
print('请传入列表结构的数据')
return 1
while True:
error_lst = []
process_list = psutil.pids()
for path in path_lst:
pd = 0
path = path.replace('\\', '/').replace('//', '/')
for process in process_list:
p = psutil.Process(process)
try:
name = p.cmdline()[1]
except Exception:
continue
if path == name:
pd = 1
break
if pd == 0:
error_lst.append(path)
if error_lst:
sr = ''
for err in error_lst:
sr += err + '\n'
sendEmail(sr)
time.sleep(3600)
else:
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), ' 程序无异常')
time.sleep(3600)
def sendEmail(msg):
key = 'xzczopvwcjzmdgjg'
EMAIL_ADDRESS = '19876511781@qq.com' # 接受邮件的邮箱地址
EMAIL_PASSWORD = key
smtp = smtplib.SMTP('smtp.qq.com', 25)
context = ssl.create_default_context()
sender = EMAIL_ADDRESS
receiver = EMAIL_ADDRESS
subject = "程序意外终止"
body = msg
msg = EmailMessage()
msg['subject'] = subject
msg['From'] = sender
msg['To'] = [receiver] #多个用户
msg.set_content(body)
with smtplib.SMTP_SSL("smtp.qq.com", 465, context=context) as smtp:
smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
smtp.send_message(msg)
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), ' 有程序意外停止 已发送到邮箱')
bind_process([ r"C:\Users\Administrator\Desktop\anjuke3\main2.py"]) # 需要检测的文件路径(crawl启动的 路径写到crawl)