This commit is contained in:
Kovid Goyal 2015-06-03 18:33:58 +05:30
parent b312adf29f
commit 73caed9c54

View File

@ -87,16 +87,19 @@ class PluginPool(object):
self.workers = [] self.workers = []
self.loop = loop self.loop = loop
for plugin in plugins: for plugin in plugins:
w = Thread(target=self.run_plugin, args=(plugin,), name=plugin.__class__.__name__) w = Thread(target=self.run_plugin, args=(plugin,), name=self.plugin_name(plugin))
w.daemon = True w.daemon = True
w.plugin = plugin w.plugin = plugin
self.workers.append(w) self.workers.append(w)
def plugin_name(self, plugin):
return plugin.__class__.__name__
def run_plugin(self, plugin): def run_plugin(self, plugin):
try: try:
plugin.start(self.loop) plugin.start(self.loop)
except Exception: except Exception:
self.loop.log.exception('Failed to start plugin: %s', plugin.__class__.__name__) self.loop.log.exception('Failed to start plugin: %s', self.plugin_name(plugin))
def start(self): def start(self):
for w in self.workers: for w in self.workers:
@ -105,7 +108,10 @@ class PluginPool(object):
def stop(self, wait_till): def stop(self, wait_till):
for w in self.workers: for w in self.workers:
if w.is_alive(): if w.is_alive():
w.plugin.stop() try:
w.plugin.stop()
except Exception:
self.loop.log.exception('Failed to stop plugin: %s', self.plugin_name(w.plugin))
for w in self.workers: for w in self.workers:
left = wait_till - time.time() left = wait_till - time.time()
if left > 0: if left > 0: