From cc8680564d259313042b211c0d40fa818b32059a Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Fri, 22 Sep 2023 12:20:33 +0300 Subject: Add email alerts --- app/PluginManager.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'app/PluginManager.py') diff --git a/app/PluginManager.py b/app/PluginManager.py index cd810b0..86da22f 100644 --- a/app/PluginManager.py +++ b/app/PluginManager.py @@ -1,13 +1,16 @@ import importlib import schedule import time +import sys +import traceback from types import ModuleType from typing import Any from app.Item import Item from app.PluginInterface import Params, PluginInterface -from app.AggroConfig import AggroConfig +from app.AggroConfig import AggroConfig, AggroConfigEmailAlerter from app.utils import get_config from app.MemoryState import memory_state +from app.EmailAlerter import EmailAlerter class PluginManager: @@ -16,6 +19,8 @@ class PluginManager: self.plugin_instances: dict[str, PluginInterface] = {} self.config = config self.scheduled_plugin_ids: list[str] = [] + if self.config.email_alerter: + self.email_alerter = EmailAlerter.from_config(self.config.email_alerter) def load_plugin(self, plugin_name: str) -> None: module: ModuleType = importlib.import_module(f"plugins.{plugin_name}") @@ -36,9 +41,15 @@ class PluginManager: if not memory_state.running: return - plugin: PluginInterface = self.plugin_instances[id] - ret_items: list[Item] = plugin.process(source_id, items) - self.propagate(id, ret_items) + try: + plugin: PluginInterface = self.plugin_instances[id] + ret_items: list[Item] = plugin.process(source_id, items) + self.propagate(id, ret_items) + except Exception as ex: + exc = traceback.format_exc() + print(exc, file=sys.stderr) + if self.email_alerter: + self.email_alerter.send_alert(exc) def build_plugin_instances(self): for id in self.config.plugins: -- cgit v1.3