From bddccad7b9986d0c353ae30a68e7e4edb476d24c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85ke=20Forslund?= Date: Mon, 27 Mar 2017 21:10:27 +0200 Subject: [PATCH] Make service loading more robust --- mycroft/audio/main.py | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/mycroft/audio/main.py b/mycroft/audio/main.py index 0f40a21146..189f5c87c3 100644 --- a/mycroft/audio/main.py +++ b/mycroft/audio/main.py @@ -84,15 +84,27 @@ def load_services(config, ws): service = [] for descriptor in service_directories: logger.info('Loading ' + descriptor['name']) - service_module = imp.load_module(descriptor["name"] + MainModule, - *descriptor["info"]) + try: + service_module = imp.load_module(descriptor["name"] + MainModule, + *descriptor["info"]) + except: + logger.error('Failed to import module ' + descriptor['name'], + exc_info=True) if (hasattr(service_module, 'autodetect') and callable(service_module.autodetect)): - s = service_module.autodetect(config, ws) - service += s + try: + s = service_module.autodetect(config, ws) + service += s + except: + logger.error('Failed to autodetect...', + exc_info=True) if (hasattr(service_module, 'load_service')): - s = service_module.load_service(config, ws) - service += s + try: + s = service_module.load_service(config, ws) + service += s + except: + logger.error('Failed to load service...', + exc_info=True) return service