You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.8 KiB
83 lines
2.8 KiB
# -*- coding: utf-8 -*-
|
|
|
|
import yagmail
|
|
import config
|
|
from utils.utils import logger
|
|
import inspect
|
|
from datetime import datetime
|
|
from models.monitor_task_model import get_task, complete
|
|
|
|
|
|
async def send_post_mail(task_id, name, message="出现异常"):
|
|
keyword = ""
|
|
task = await get_task(task_id)
|
|
if not task:
|
|
message = F"不存在的任务ID: {task_id}"
|
|
else:
|
|
keyword = task.keyword
|
|
|
|
mail_server = None
|
|
try:
|
|
mail_server = yagmail.SMTP(user=config.SMTP_USER, password=config.SMTP_PASSWORD, host=config.SMTP_HOST)
|
|
except Exception as e:
|
|
logger.error("[邮件]初始化失败 请检查邮件配置")
|
|
return
|
|
to = []
|
|
if not config.POST_EMAIL:
|
|
logger.warn("[邮件]未配置用于接收邮件上报的邮箱地址 邮件上报被取消")
|
|
return
|
|
if isinstance(config.POST_EMAIL, str):
|
|
to.append(config.POST_EMAIL)
|
|
elif isinstance(config.POST_EMAIL, list):
|
|
to = config.POST_EMAIL
|
|
else:
|
|
logger.warn("[邮件]未配置用于接收邮件上报的邮箱地址 邮件上报被取消")
|
|
return
|
|
|
|
title = F"HuoSpider上报邮件: {name}数据获取异常"
|
|
content = F"""
|
|
异常任务ID: {task_id}
|
|
异常站点: {name}
|
|
关键词: {keyword}
|
|
异常信息: {message}
|
|
上报时间: {datetime.today().strftime("%Y-%m-%d %H:%M:%S")}
|
|
"""
|
|
inspect.cleandoc(content)
|
|
mail_server.send(to, title, content)
|
|
mail_server.close()
|
|
logger.info(f"[邮件]任务ID: {task_id} 异常上报邮件发送成功 收件人: {to}")
|
|
|
|
|
|
async def test(task_id, name, message="出现异常"):
|
|
keyword = "测试"
|
|
|
|
mail_server = None
|
|
try:
|
|
mail_server = yagmail.SMTP(user=config.SMTP_USER, password=config.SMTP_PASSWORD, host=config.SMTP_HOST)
|
|
except Exception as e:
|
|
logger.error("[邮件]初始化失败 请检查邮件配置")
|
|
return
|
|
to = []
|
|
if not config.POST_EMAIL:
|
|
logger.warn("[邮件]未配置用于接收邮件上报的邮箱地址 邮件上报被取消")
|
|
return
|
|
if isinstance(config.POST_EMAIL, str):
|
|
to.append(config.POST_EMAIL)
|
|
elif isinstance(config.POST_EMAIL, list):
|
|
to = config.POST_EMAIL
|
|
else:
|
|
logger.warn("[邮件]未配置用于接收邮件上报的邮箱地址 邮件上报被取消")
|
|
return
|
|
|
|
title = F"HuoSpider上报邮件: {name}数据获取异常"
|
|
content = F"""
|
|
异常任务ID: {task_id}
|
|
异常站点: {name}
|
|
关键词: {keyword}
|
|
异常信息: {message}
|
|
上报时间: {datetime.today().strftime("%Y-%m-%d %H:%M:%S")}
|
|
"""
|
|
inspect.cleandoc(content)
|
|
mail_server.send(to, title, content)
|
|
mail_server.close()
|
|
logger.info(f"[邮件]任务ID: {task_id} 异常上报邮件发送成功 收件人: {to}")
|