def __init__( self, bundle_path: str = Provide[BentoMLContainer.bundle_path], app_name: str = None, enable_swagger: bool = Provide[ BentoMLContainer.config.bento_server.swagger.enabled], enable_metrics: bool = Provide[ BentoMLContainer.config.bento_server.metrics.enabled], enable_feedback: bool = Provide[ BentoMLContainer.config.bento_server.feedback.enabled], tracer=Provide[BentoMLContainer.tracer], ): from bentoml.saved_bundle.loader import load_from_dir assert bundle_path, repr(bundle_path) self.bento_service = load_from_dir(bundle_path) app_name = self.bento_service.name if app_name is None else app_name self.app = Flask(app_name, static_folder=None) self.static_path = self.bento_service.get_web_static_content_path() self.enable_swagger = enable_swagger self.enable_metrics = enable_metrics self.enable_feedback = enable_feedback self.tracer = tracer self.swagger_path = os.path.join( os.path.dirname(os.path.abspath(__file__)), 'static_content') for middleware in (InstrumentMiddleware, ): self.app.wsgi_app = middleware(self.app.wsgi_app, self.bento_service) self.setup_routes()
def test_save_load(yatai_server_container, example_bento_service_class): example_bento_service_class = bentoml.ver( major=2, minor=1)(example_bento_service_class) yc = get_yatai_client(yatai_server_container) test_model = TestModel() svc = example_bento_service_class() svc.pack('model', test_model) saved_path = svc.save(yatai_url=yatai_server_container) assert saved_path bento_pb = yc.repository.get(f'{svc.name}:{svc.version}') bento_service = load_from_dir(bento_pb.uri.uri) assert bento_service.predict(1) == 2
def test_save_load(yatai_service_url, example_bento_service_class): yc = get_yatai_client(yatai_service_url) test_model = TestModel() svc = example_bento_service_class() svc.pack('model', test_model) saved_path = svc.save(yatai_url=yatai_service_url) assert saved_path bento_pb = yc.repository.get(f'{svc.name}:{svc.version}') with TempDirectory() as temp_dir: new_temp_dir = os.path.join(temp_dir, uuid.uuid4().hex[:12]) yc.repository.download_to_directory(bento_pb, new_temp_dir) bento_service = load_from_dir(new_temp_dir) assert bento_service.predict(1) == 2