1+ import logging
2+
13import requests
4+ from requests_file import FileAdapter
25
36from kepler_model .estimate .model_server_connector import unpack
47from kepler_model .util .config import get_init_model_url
58from kepler_model .util .loader import load_metadata
69from kepler_model .util .train_types import ModelOutputType
710
11+ logger = logging .getLogger (__name__ )
12+
813failed_list = []
914
1015FILTER_ITEM_DELIMIT = ";"
@@ -38,19 +43,21 @@ def valid_metrics(metrics, features):
3843def is_valid_model (metrics , metadata , filters ):
3944 if not valid_metrics (metrics , metadata ["features" ]):
4045 return False
46+
4147 for attrb , val in filters .items ():
4248 if not hasattr (metadata , attrb ) or getattr (metadata , attrb ) is None :
43- print ( "{ } has no {}" . format ( metadata [ "model_name" ], attrb ) )
49+ logger . warning ( f" { metadata [ 'model_name' ] } has no { attrb } " )
4450 return False
45- else :
46- cmp_val = getattr (metadata , attrb )
47- val = float (val )
48- if attrb == "abs_max_corr" : # higher is better
49- valid = cmp_val >= val
50- else : # lower is better
51- valid = cmp_val <= val
52- if not valid :
53- return False
51+
52+ cmp_val = getattr (metadata , attrb )
53+ val = float (val )
54+ if attrb == "abs_max_corr" : # higher is better
55+ valid = cmp_val >= val
56+ else : # lower is better
57+ valid = cmp_val <= val
58+ if not valid :
59+ return False
60+
5461 return True
5562
5663
@@ -60,21 +67,25 @@ def reset_failed_list():
6067
6168
6269def get_achived_model (power_request ):
63- print ("get archived model" )
6470 global failed_list
6571 output_type_name = power_request .output_type
6672 if output_type_name in failed_list :
6773 return None
6874 output_type = ModelOutputType [power_request .output_type ]
6975 url = get_init_model_url (power_request .energy_source , output_type_name )
7076 if url == "" :
71- print ( "no URL set for " , output_type_name , power_request .energy_source )
77+ logger . warning ( f "no URL set for { output_type_name } , { power_request .energy_source } " )
7278 return None
73- print (f"try getting archieved model from URL: { url } for { output_type_name } " )
74- response = requests .get (url )
75- print (response )
79+ logger .info (f"try getting archieved model from URL: { url } for { output_type_name } " )
80+
81+ s = requests .Session ()
82+ s .mount ("file://" , FileAdapter ())
83+ response = s .get (url )
84+ logger .debug (f"response: { response } " )
85+
7686 if response .status_code != 200 :
7787 return None
88+
7889 output_path = unpack (power_request .energy_source , output_type , response , replace = False )
7990 if output_path is not None :
8091 metadata = load_metadata (output_path )
@@ -83,7 +94,8 @@ def get_achived_model(power_request):
8394 if not is_valid_model (power_request .metrics , metadata , filters ):
8495 failed_list += [output_type_name ]
8596 return None
86- except :
87- print ( "cannot validate the archived model" )
97+ except Exception as e :
98+ logger . warning ( f "cannot validate the archived model: { e } " )
8899 return None
100+
89101 return output_path
0 commit comments