def serve()

in src/vw-serving/src/vw_serving/model_manager.py [0:0]


    def serve(self):
        if self.sagemaker_tar_gz:
            metadata_path, weights_path = self.get_model(disk_path=integ.ARTIFACTS_VOLUME)
        else:
            metadata_path, weights_path = self.get_model(model_id=self.model_id)

        redis_client = redis.Redis()
        redis_client.set("model_id", self.model_id)
        redis_client.set("{}:weights".format(self.model_id), weights_path)
        redis_client.set("{}:metadata".format(self.model_id), metadata_path)

        if self.log_inference_data:
            self._start_experience_logger()

        logger.info("Starting gunicorn...")
        self._start_gunicorn_server()
        logger.info("Started gunicorn.")
        sleep_seconds = 1
        if self.poll_db:
            while True:
                time.sleep(sleep_seconds)
                next_model_to_host_id = self._check_for_new_model()
                # logger.info("Fetching latest model from Dynamo")
                if next_model_to_host_id:
                    logger.info(
                        f"Found new model! Trying to replace Model ID: {self.model_id} with Model ID: {next_model_to_host_id}")

                    try:
                        metadata, weights = self.get_model(model_id=next_model_to_host_id)

                        # Delete the old model
                        redis_client.delete(self.model_id)
                        redis_client.delete("{}:weights".format(self.model_id))
                        redis_client.delete("{}:weights".format(self.model_id))

                        self.model_id = next_model_to_host_id
                        redis_client.set("model_id", self.model_id)
                        redis_client.set("{}:weights".format(self.model_id), weights)
                        redis_client.set("{}:metadata".format(self.model_id), metadata)
                        self._restart_gunicorn_workers()
                    except Exception as e:
                        logger.exception(f"Error happened when deploying model {next_model_to_host_id} due to {e}")