25 lines
656 B
Python
25 lines
656 B
Python
import importlib
|
|
|
|
|
|
class WorkersManager:
|
|
def __init__(self, config):
|
|
self._config = config
|
|
self._workers = self._register_klasses()
|
|
|
|
def get_updates(self):
|
|
lazy_map = map(lambda worker: worker.status_update(), self._workers)
|
|
flat_list = sum(lazy_map, []) # List flatten
|
|
return flat_list
|
|
|
|
def _register_klasses(self):
|
|
arr = []
|
|
|
|
for worker_klass in self._config.keys():
|
|
klass = getattr(importlib.import_module("workers.%s" % worker_klass), "%sWorker" % worker_klass.title())
|
|
arr.append(klass(**self._args_for(worker_klass)))
|
|
|
|
return arr
|
|
|
|
def _args_for(self, klass):
|
|
return self._config[klass]['args']
|