in docker/build_artifacts/sagemaker/tfs_utils.py [0:0]
def wait_for_model(rest_port, model_name, timeout_seconds, wait_interval_seconds=5):
tfs_url = "http://localhost:{}/v1/models/{}".format(rest_port, model_name)
with timeout(timeout_seconds):
while True:
try:
session = requests.Session()
retries = Retry(total=9,
backoff_factor=0.1)
session.mount('http://', requests.adapters.HTTPAdapter(max_retries=retries))
log.info("Trying to connect with model server: {}".format(tfs_url))
response = session.get(tfs_url)
log.info(response)
if response.status_code == 200:
versions = json.loads(response.content)["model_version_status"]
if all(version["state"] == "AVAILABLE" for version in versions):
break
except (ConnectionRefusedError, NewConnectionError,
MaxRetryError, requests.exceptions.ConnectionError):
log.warning("model: {} is not available yet ".format(tfs_url))
time.sleep(wait_interval_seconds)
log.info("model: {} is available now".format(tfs_url))