from ebonite.core.objects import Model
from ebonite.runtime.command_line import start_runtime
from ebonite.runtime.interface import Interface
from ebonite.runtime.interface.ml_model import ModelLoader, model_interface
from ebonite.runtime.server import Server
from ebonite.utils.importing import module_importable
[docs]def run_model_server(model: Model, server: Server = None):
"""
:func:`.start_runtime` wrapper helper which starts Ebonite runtime for given model and (optional) server
:param model: model to start Ebonite runtime for
:param server: server to use for Ebonite runtime, default is a flask-based server
:return: nothing
"""
if server is None:
if module_importable('aiohttp') and module_importable('aiohttp_swagger'):
from ebonite.ext.aiohttp import AIOHTTPServer
server = AIOHTTPServer()
elif module_importable('flask') and module_importable('flasgger'):
from ebonite.ext.flask import FlaskServer
server = FlaskServer()
else:
raise RuntimeError('You need to install flask and flasgger to use test flask server')
class DummyLoader(ModelLoader):
def load(self) -> Interface:
model.ensure_loaded()
return model_interface(model)
start_runtime(DummyLoader(), server)