优化错误日志及重试机制
This commit is contained in:
@@ -3,7 +3,24 @@ import logging
|
||||
import smtplib
|
||||
from email.mime.text import MIMEText
|
||||
|
||||
from auto_email import ERROR_EMAIL_CONFIG
|
||||
from tenacity import retry, stop_after_attempt, wait_random
|
||||
|
||||
from auto_email import ERROR_EMAIL_CONFIG, TRY_TIMES, MIN_WAIT_TIME, MAX_WAIT_TIME
|
||||
|
||||
|
||||
@retry(stop=stop_after_attempt(TRY_TIMES), wait=wait_random(MIN_WAIT_TIME, MAX_WAIT_TIME), reraise=True,
|
||||
retry_error_callback=lambda x: logging.warning("邮件发送失败!"))
|
||||
def send_email(email_config, massage):
|
||||
smtp_server = email_config["smtp_server"]
|
||||
port = email_config["port"]
|
||||
sender = email_config["sender"]
|
||||
authorization_code = email_config["authorization_code"]
|
||||
receivers = email_config["receivers"]
|
||||
mail = smtplib.SMTP_SSL(smtp_server, port) # 连接SMTP服务
|
||||
mail.login(sender, authorization_code) # 登录到SMTP服务
|
||||
mail.sendmail(sender, receivers, massage.as_string()) # 发送邮件
|
||||
mail.quit()
|
||||
logging.info(f"成功发送了一封邮件到[{','.join(receivers)}]")
|
||||
|
||||
|
||||
def send_error_email(program_name, error_name, error_detail):
|
||||
@@ -16,12 +33,8 @@ def send_error_email(program_name, error_name, error_detail):
|
||||
"""
|
||||
|
||||
# SMTP 服务器配置
|
||||
smtp_server = ERROR_EMAIL_CONFIG["smtp_server"]
|
||||
port = ERROR_EMAIL_CONFIG["port"]
|
||||
sender = ERROR_EMAIL_CONFIG["sender"]
|
||||
authorization_code = ERROR_EMAIL_CONFIG["authorization_code"]
|
||||
receivers = ERROR_EMAIL_CONFIG["receivers"]
|
||||
retry_times = ERROR_EMAIL_CONFIG["retry_times"]
|
||||
|
||||
# 获取程序出错的时间
|
||||
error_time = datetime.datetime.strftime(datetime.datetime.today(), "%Y-%m-%d %H:%M:%S:%f")
|
||||
@@ -60,14 +73,4 @@ def send_error_email(program_name, error_name, error_detail):
|
||||
receivers_str = ','.join(receivers)
|
||||
massage['To'] = receivers_str # 收件人
|
||||
|
||||
for i in range(retry_times):
|
||||
try:
|
||||
mail = smtplib.SMTP_SSL(smtp_server, port) # 连接SMTP服务
|
||||
mail.login(sender, authorization_code) # 登录到SMTP服务
|
||||
mail.sendmail(sender, receivers, massage.as_string()) # 发送邮件
|
||||
mail.quit()
|
||||
logging.info("成功发送了一封邮件到" + receivers_str)
|
||||
break
|
||||
except smtplib.SMTPException:
|
||||
if i == retry_times - 1:
|
||||
logging.warning("邮件发送失败!")
|
||||
send_email(ERROR_EMAIL_CONFIG, massage)
|
||||
|
||||
Reference in New Issue
Block a user