diff --git a/app/chain/__init__.py b/app/chain/__init__.py index 873030cd..8d5afe07 100644 --- a/app/chain/__init__.py +++ b/app/chain/__init__.py @@ -121,6 +121,16 @@ class ChainBase(metaclass=ABCMeta): self.messagehelper.put(title=f"{module_name}发生了错误", message=str(err), role="system") + self.eventmanager.send_event( + EventType.SystemError, + { + "type": "module", + "module_name": module_name, + "module_method": method, + "error": str(err), + "traceback": traceback.format_exc() + } + ) return result def recognize_media(self, meta: MetaBase = None, diff --git a/app/command.py b/app/command.py index 72bad0f8..64232342 100644 --- a/app/command.py +++ b/app/command.py @@ -224,6 +224,16 @@ class Command(metaclass=Singleton): self.messagehelper.put(title=f"{event.event_type} 事件处理出错", message=f"{class_name}.{method_name}:{str(e)}", role="system") + self.eventmanager.send_event( + EventType.SystemError, + { + "type": "event", + "event_type": event.event_type, + "event_handle": f"{class_name}.{method_name}", + "error": str(e), + "traceback": traceback.format_exc() + } + ) def __run_command(self, command: Dict[str, any], data_str: str = "", diff --git a/app/scheduler.py b/app/scheduler.py index 8419a013..4cd71881 100644 --- a/app/scheduler.py +++ b/app/scheduler.py @@ -18,10 +18,12 @@ from app.chain.tmdb import TmdbChain from app.chain.torrents import TorrentsChain from app.chain.transfer import TransferChain from app.core.config import settings +from app.core.event import EventManager from app.core.plugin import PluginManager from app.helper.sites import SitesHelper from app.log import logger from app.schemas import Notification, NotificationType +from app.schemas.types import EventType from app.utils.singleton import Singleton from app.utils.timer import TimerUtils @@ -370,6 +372,16 @@ class Scheduler(metaclass=Singleton): SchedulerChain().messagehelper.put(title=f"{job_name} 执行失败", message=str(e), role="system") + EventManager().send_event( + EventType.SystemError, + { + "type": "scheduler", + "scheduler_id": job_id, + "scheduler_name": job_name, + "error": str(e), + "traceback": traceback.format_exc() + } + ) # 运行结束 with self._lock: try: diff --git a/app/schemas/types.py b/app/schemas/types.py index 9e470597..1a91ac4b 100644 --- a/app/schemas/types.py +++ b/app/schemas/types.py @@ -46,6 +46,8 @@ class EventType(Enum): SubscribeAdded = "subscribe.added" # 订阅已完成 SubscribeComplete = "subscribe.complete" + # 系统错误 + SystemError = "system.error" # 系统配置Key字典