From 7a9f05ecc3f1020dfd5fbc4b9f8c1242c88877f5 Mon Sep 17 00:00:00 2001 From: mkaay Date: Tue, 25 Jan 2011 22:41:17 +0100 Subject: moved hooks periodical call to scheduler --- module/HookManager.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) (limited to 'module/HookManager.py') diff --git a/module/HookManager.py b/module/HookManager.py index a6a8e4005..69e922d14 100644 --- a/module/HookManager.py +++ b/module/HookManager.py @@ -48,7 +48,8 @@ class HookManager(): return func(*args) except Exception, e: args[0].log.error(_("Error executing hooks: %s") % str(e)) - traceback.print_exc() + if args[0].core.debug: + traceback.print_exc() return new def createIndex(self): @@ -70,12 +71,21 @@ class HookManager(): self.plugins = plugins - @try_catch - def periodical(self): - for plugin in self.plugins: - if plugin.isActivated() and plugin.lastCall + plugin.interval < time(): - plugin.lastCall = time() + def initPeriodical(self): + def wrapPeriodical(plugin): + plugin.lastCall = time() + try: plugin.periodical() + except Exception, e: + args[0].log.error(_("Error executing hooks: %s") % str(e)) + if self.core.debug: + traceback.print_exc() + + self.core.scheduler.addJob(plugin.interval, wrapPeriodical, args=[plugin]) + + for plugin in self.plugins: + if plugin.isActivated(): + self.core.scheduler.addJob(0, wrapPeriodical, args=[plugin]) @try_catch @@ -83,6 +93,7 @@ class HookManager(): for plugin in self.plugins: if plugin.isActivated(): plugin.coreReady() + self.initPeriodical() @lock def downloadStarts(self, pyfile): -- cgit v1.2.3