From f236f879f4062cb188c0da9853ba2c5a54f7bba5 Mon Sep 17 00:00:00 2001 From: jesopo Date: Wed, 13 Mar 2019 18:27:34 +0000 Subject: [PATCH] Reload bot.conf and modules on SIGHUP --- modules/signals.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/modules/signals.py b/modules/signals.py index 91b4099e..25dc28dd 100644 --- a/modules/signals.py +++ b/modules/signals.py @@ -6,6 +6,7 @@ class Module(ModuleManager.BaseModule): self._exited = False signal.signal(signal.SIGINT, self.SIGINT) signal.signal(signal.SIGUSR1, self.SIGUSR1) + signal.signal(signal.SIGHUP, self.SIGHUP) def SIGINT(self, signum, frame): print() @@ -30,7 +31,34 @@ class Module(ModuleManager.BaseModule): def SIGUSR1(self, signum, frame): self.bot.trigger(self._reload_config) + def SIGHUP(self, signum, frame): + self.bot.trigger(self._SIGHUP) + def _SIGHUP(self): + self._reload_config() + self._reload_modules() + def _reload_config(self): self.bot.log.info("Reloading config file", []) self.bot.config.load() self.bot.log.info("Reloaded config file", []) + + def _reload(self, name): + self.bot.modules.unload_module(name) + self.bot.modules.load_module(self.bot, name) + def _reload_modules(self): + self.bot.log.info("Reloading modules", []) + + reloaded = [] + failed = [] + for name in list(self.bot.modules.modules.keys()): + try: + self._reload(name) + except ModuleManager.ModuleWarning: + continue + except Exception as e: + failed.append(name) + continue + reloaded.append(name) + + self.bot.log.info("Reloaded %d modules (%d failed)", + [len(reloaded), len(failed)])