import importlib from pathlib import Path def configured_workers(): from config import settings workers = settings['manager']['workers'] return _get_requirements(workers) def all_workers(): workers = map(lambda x: x.stem, Path('./workers').glob('*.py')) return _get_requirements(workers) def _get_requirements(workers): requirements = set() for worker_name in workers: module_obj = importlib.import_module("workers.%s" % worker_name) try: requirements.update(module_obj.REQUIREMENTS) except AttributeError: continue return requirements