From f93fda8efae9989334913338645145efdbb1e3c6 Mon Sep 17 00:00:00 2001 From: konjacpotato Date: Fri, 20 Feb 2026 19:03:02 +0800 Subject: [PATCH] =?UTF-8?q?add=20job=20=E6=89=A7=E8=A1=8C=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E7=9A=84=20=E9=82=AE=E4=BB=B6=E6=8A=A5=E8=AD=A6?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 11 +++- config/settings.py | 9 +++ peter.py | 13 +++- utils/__init__.py | 3 +- utils/__pycache__/__init__.cpython-312.pyc | Bin 201 -> 254 bytes utils/mail_sender.py | 71 +++++++++++++++++++++ 6 files changed, 103 insertions(+), 4 deletions(-) create mode 100644 utils/mail_sender.py diff --git a/.env b/.env index 2ce50b9..1600cde 100644 --- a/.env +++ b/.env @@ -12,4 +12,13 @@ DB_HOST= 47.119.128.161 # 192.168.1.200 DB_PORT=19732 DB_USER=postgres DB_PASS=postgres -DB_NAME=peter \ No newline at end of file +DB_NAME=peter + +# 邮件发送配置 +SMTP_HOST=smtp.qq.com +SMTP_PORT=587 +SMTP_USER=1026090807@qq.com +SMTP_PASSWORD=hqorvminmnuubebf +SMTP_USE_TLS=true +SMTP_FROM=Peter +ERROR_NOTIFICATION_EMAIL=changsongd@126.com \ No newline at end of file diff --git a/config/settings.py b/config/settings.py index 7254194..1951aa6 100644 --- a/config/settings.py +++ b/config/settings.py @@ -22,6 +22,15 @@ class Settings(BaseSettings): DB_PASS: str DB_NAME: str + # 邮件发送配置 + SMTP_HOST: str = Field("SMTP_HOST") + SMTP_PORT: int = Field(587, env="SMTP_PORT") + SMTP_USER: str = Field("SMTP_USER") + SMTP_PASSWORD: str = Field("SMTP_PASSWORD") + SMTP_USE_TLS: bool = Field(True, env="SMTP_USE_TLS") + SMTP_FROM: str = Field("SMTP_FROM") + ERROR_NOTIFICATION_EMAIL: str = Field("ERROR_NOTIFICATION_EMAIL") + class Config: env_file = ".env" env_file_encoding = "utf-8" diff --git a/peter.py b/peter.py index e09ff91..d8eaa3a 100644 --- a/peter.py +++ b/peter.py @@ -2,15 +2,24 @@ from functools import partial from apscheduler.schedulers.blocking import BlockingScheduler from apscheduler.events import EVENT_JOB_ERROR -from config import config +from config import config, settings from task import manager_task -from utils import logger +from utils import logger, MailSender def job_error_listener(event): if event.exception: logger.error(f"Job {event.job_id} crashed: {str(event.exception)}") # 可添加邮件/钉钉告警逻辑 + try: + mail_sender = MailSender() + mail_sender.execute( + to_addrs=settings.ERROR_NOTIFICATION_EMAIL, + subject=f"Job {event.job_id} crashed", + body=f"Job {event.job_id} crashed with error: {str(event.exception)}" + ) + except Exception as e: + logger.error(f"Failed to send error notification email: {e}") if __name__ == '__main__': diff --git a/utils/__init__.py b/utils/__init__.py index 649c832..151d68f 100644 --- a/utils/__init__.py +++ b/utils/__init__.py @@ -1 +1,2 @@ -from utils.logger import logger \ No newline at end of file +from utils.logger import logger +from utils.mail_sender import MailSender \ No newline at end of file diff --git a/utils/__pycache__/__init__.cpython-312.pyc b/utils/__pycache__/__init__.cpython-312.pyc index 6f65b6de10383011b765d956a4972731e52cdf51..ffd02f356c5ee5eb02d80e8b574be2bc9924132b 100644 GIT binary patch delta 161 zcmX@f_>YnIG%qg~0}zDT&B*ka$Sav81LRC+NMT4}%wfo7jACR2v6*t1a+#x;85t^> zHCbMQ)N3-{V#~=-PfslZvbcN`GjoDd^HNfa{4`l^@syTi<`nBeq>Gq=s&5HGgmQuE m;)}rwi&!Sc1