Beispiel #1
0
    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