From 3dca228f9df6949a9d6fa44d522eb06be47f80f4 Mon Sep 17 00:00:00 2001
From: Yoann Schneider <yschneider@teklia.com>
Date: Fri, 10 Feb 2023 12:15:01 +0100
Subject: [PATCH] encapsulate requests in try except

---
 dan/mlflow.py | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/dan/mlflow.py b/dan/mlflow.py
index 063c2b91..c1d6cd3f 100644
--- a/dan/mlflow.py
+++ b/dan/mlflow.py
@@ -3,11 +3,19 @@ import os
 from contextlib import contextmanager
 
 import mlflow
+import requests
 from mlflow.exceptions import MlflowException
 
 from dan import logger
 
 
+def make_mlflow_request(mlflow_method, *args, **kwargs):
+    try:
+        mlflow_method(*args, **kwargs)
+    except requests.exceptions.ConnectionError as e:
+        logger.error(f"Call to `{str(mlflow_method)}` failed with error: {str(e)}")
+
+
 def setup_environment(config: dict):
     """
     Get the necessary variables from the config file and put them in the environment variables
@@ -45,7 +53,9 @@ def logging_metrics(
         mlflow_values = {
             f"{step}_{name}": value for name, value in display_values.items()
         }
-        mlflow.log_metrics(mlflow_values, epoch)
+        make_mlflow_request(
+            mlflow_method=mlflow.log_metrics, metrics=mlflow_values, step=epoch
+        )
 
 
 def logging_tags_metrics(
@@ -66,7 +76,7 @@ def logging_tags_metrics(
         mlflow_values = {
             f"{step}_{name}": value for name, value in display_values.items()
         }
-        mlflow.set_tags(mlflow_values)
+        make_mlflow_request(mlflow_method=mlflow.set_tags, tags=mlflow_values)
 
 
 @contextmanager
@@ -84,7 +94,9 @@ def start_mlflow_run(config: dict):
     experiment_id = config.get("experiment_id")
     assert experiment_id, "Missing MLflow experiment ID in the configuration"
     try:
-        mlflow.set_experiment(experiment_id=experiment_id)
+        make_mlflow_request(
+            mlflow_method=mlflow.set_experiment, experiment_id=experiment_id
+        )
         logger.info(f"Run Experiment ID : {experiment_id} on MLFlow")
     except MlflowException as e:
         logger.error(f"Couldn't set Mlflow experiment with ID: {experiment_id}")
-- 
GitLab