From c980f69ccc41b07efc9c1c56b3309303c4f09aaa Mon Sep 17 00:00:00 2001 From: Kelly Tran Date: Wed, 17 Jul 2024 13:47:08 -0400 Subject: [PATCH] error message for automations --- .../background_jobs/dosing_automation.py | 26 ++++++++++++------- pioreactor/background_jobs/led_automation.py | 25 +++++++++++------- .../background_jobs/temperature_automation.py | 20 +++++++++----- 3 files changed, 47 insertions(+), 24 deletions(-) diff --git a/pioreactor/background_jobs/dosing_automation.py b/pioreactor/background_jobs/dosing_automation.py index 8e70b4fb..afa5e8ab 100644 --- a/pioreactor/background_jobs/dosing_automation.py +++ b/pioreactor/background_jobs/dosing_automation.py @@ -21,6 +21,7 @@ from pioreactor.automations import events from pioreactor.automations.base import AutomationJob from pioreactor.config import config +from pioreactor.logging import create_logger from pioreactor.utils import is_pio_job_running from pioreactor.utils import local_persistant_storage from pioreactor.utils import SummableDict @@ -691,15 +692,22 @@ def start_dosing_automation( raise KeyError( f"Unable to find {automation_name}. Available automations are {list( available_dosing_automations.keys())}" ) - - return klass( - unit=unit, - experiment=experiment, - automation_name=automation_name, - skip_first_run=skip_first_run, - duration=duration, - **kwargs, - ) + + try: + return klass( + unit=unit, + experiment=experiment, + automation_name=automation_name, + skip_first_run=skip_first_run, + duration=duration, + **kwargs, + ) + + except Exception as e: + logger = create_logger("dosing_automation") + logger.error(f"Error: {e}") + logger.debug(e, exc_info=True) + raise e available_dosing_automations: dict[str, type[DosingAutomationJob]] = {} diff --git a/pioreactor/background_jobs/led_automation.py b/pioreactor/background_jobs/led_automation.py index 9c739cb4..f707706a 100644 --- a/pioreactor/background_jobs/led_automation.py +++ b/pioreactor/background_jobs/led_automation.py @@ -18,6 +18,7 @@ from pioreactor.automations import events from pioreactor.automations.base import AutomationJob from pioreactor.config import config +from pioreactor.logging import create_logger from pioreactor.utils import is_pio_job_running from pioreactor.utils import whoami from pioreactor.utils.timing import current_utc_datetime @@ -295,15 +296,21 @@ def start_led_automation( f"Unable to find {automation_name}. Available automations are {list(available_led_automations.keys())}" ) - return klass( - unit=unit, - experiment=experiment, - automation_name=automation_name, - skip_first_run=skip_first_run, - duration=duration, - **kwargs, - ) - + try: + return klass( + unit=unit, + experiment=experiment, + automation_name=automation_name, + skip_first_run=skip_first_run, + duration=duration, + **kwargs, + ) + + except Exception as e: + logger = create_logger("led_automation") + logger.error(f"Error: {e}") + logger.debug(e, exc_info=True) + raise e available_led_automations: dict[str, type[LEDAutomationJob]] = {} diff --git a/pioreactor/background_jobs/temperature_automation.py b/pioreactor/background_jobs/temperature_automation.py index 494fab92..ae584a11 100644 --- a/pioreactor/background_jobs/temperature_automation.py +++ b/pioreactor/background_jobs/temperature_automation.py @@ -18,6 +18,7 @@ from pioreactor import types as pt from pioreactor.automations.base import AutomationJob from pioreactor.config import config +from pioreactor.logging import create_logger from pioreactor.structs import Temperature from pioreactor.utils import clamp from pioreactor.utils import is_pio_job_running @@ -645,12 +646,19 @@ def start_temperature_automation( if "skip_first_run" in kwargs: del kwargs["skip_first_run"] - return klass( - unit=unit, - experiment=experiment, - automation_name=automation_name, - **kwargs, - ) + try: + return klass( + unit=unit, + experiment=experiment, + automation_name=automation_name, + **kwargs, + ) + + except Exception as e: + logger = create_logger("temperature_automation") + logger.error(f"Error: {e}") + logger.debug(e, exc_info=True) + raise e available_temperature_automations: dict[str, type[TemperatureAutomationJob]] = {}