def restore(self, model_id: str, model_version: str, store_address: dict): """ Restore model from redis to local cache :param model_id: :param model_version: :param store_address: :return: """ try: red = self.get_connection(config=store_address) model = PipelinedModel(model_id=model_id, model_version=model_version) redis_store_key = self.store_key(model_id=model_id, model_version=model_version) model_archive_data = red.get(name=redis_store_key) if not model_archive_data: raise Exception( "Restore model {} {} to redis failed: {}".format( model_id, model_version, "can not found model archive data")) with open(model.archive_model_file_path(), "wb") as fw: fw.write(model_archive_data) model.unpack_model(model.archive_model_file_path()) LOGGER.info( "Restore model to {} from redis successfully using key {}". format(model.archive_model_file_path(), redis_store_key)) except Exception as e: LOGGER.exception(e) raise Exception("Restore model {} {} from redis failed".format( model_id, model_version))
def restore(self, model_id: str, model_version: str, store_address: dict): """ Restore model from mysql to local cache :param model_id: :param model_version: :param store_address: :return: """ try: self.get_connection(config=store_address) model = PipelinedModel(model_id=model_id, model_version=model_version) with DB.connection_context(): models_in_tables = MachineLearningModel.select().where(MachineLearningModel.f_model_id == model_id, MachineLearningModel.f_model_version == model_version).\ order_by(MachineLearningModel.f_slice_index) if not models_in_tables: raise Exception("Restore model {} {} from mysql failed: {}".format( model_id, model_version, "can not found model in table")) f_content = '' for models_in_table in models_in_tables: if not f_content: f_content = models_in_table.f_content else: f_content += models_in_table.f_content model_archive_data = deserialize_b64(f_content) if not model_archive_data: raise Exception("Restore model {} {} from mysql failed: {}".format( model_id, model_version, "can not get model archive data")) with open(model.archive_model_file_path(), "wb") as fw: fw.write(model_archive_data) model.unpack_model(model.archive_model_file_path()) LOGGER.info("Restore model to {} from mysql successfully".format(model.archive_model_file_path())) self.close_connection() except Exception as e: LOGGER.exception(e) raise Exception("Restore model {} {} from mysql failed".format(model_id, model_version))