Browse Source

Manage running plugins

pull/51/merge
Ruud 14 years ago
parent
commit
11ce5f9c79
  1. 3
      couchpotato/core/_base/_core/main.py
  2. 4
      couchpotato/core/event.py
  3. 22
      couchpotato/core/plugins/base.py

3
couchpotato/core/_base/_core/main.py

@ -35,7 +35,8 @@ class Core(Plugin):
brk = True brk = True
for running in still_running: for running in still_running:
if running > 0: if len(running) > 0:
log.info('Waiting on plugins to finish: %s' % running)
brk = False brk = False
if brk: break if brk: break

4
couchpotato/core/event.py

@ -19,9 +19,9 @@ def addEvent(name, handler):
try: try:
parent = handler.im_self parent = handler.im_self
parent.beforeCall() parent.beforeCall(handler)
h = handler(*args, **kwargs) h = handler(*args, **kwargs)
parent.afterCall() parent.afterCall(handler)
except: except:
h = handler(*args, **kwargs) h = handler(*args, **kwargs)

22
couchpotato/core/plugins/base.py

@ -17,7 +17,7 @@ class Plugin(object):
auto_register_static = True auto_register_static = True
needs_shutdown = False needs_shutdown = False
running = 0 running = []
def registerPlugin(self): def registerPlugin(self):
addEvent('app.shutdown', self.doShutdown) addEvent('app.shutdown', self.doShutdown)
@ -67,11 +67,12 @@ class Plugin(object):
except Exception, e: except Exception, e:
log.error('Unable to create folder "%s": %s' % (path, e)) log.error('Unable to create folder "%s": %s' % (path, e))
def beforeCall(self): def beforeCall(self, handler):
self.isRunning(True) log.debug('Calling %s.%s' % (self.getName(), handler.__name__))
self.isRunning('%s.%s' % (self.getName(), handler.__name__))
def afterCall(self): def afterCall(self, handler):
self.isRunning(False) self.isRunning('%s.%s' % (self.getName(), handler.__name__), False)
def doShutdown(self): def doShutdown(self):
self.shuttingDown(True) self.shuttingDown(True)
@ -82,12 +83,17 @@ class Plugin(object):
self.needs_shutdown = value self.needs_shutdown = value
def isRunning(self, value = None): def isRunning(self, value = None, bool = True):
if value is None: if value is None:
return self.running return self.running
log.debug('Running %s: %s' % (value, self.getName())) if bool:
self.running += 1 if value else -1 self.running.append(value)
else:
try:
self.running.remove(value)
except:
log.error("Something went wrong when finishing the plugin function. Could not find the 'is_running' key")
def isDisabled(self): def isDisabled(self):
return not self.isEnabled() return not self.isEnabled()

Loading…
Cancel
Save