Skip to content
Snippets Groups Projects
Commit b14edc41 authored by Tor-Einar Skog's avatar Tor-Einar Skog
Browse files

Handling client running non-existent model

parent fa3b4013
Branches
Tags
No related merge requests found
......@@ -34,7 +34,8 @@ def discover_models():
return models
def get_model_instance(model_id):
return get_vips_models().get(model_id)()
model_class = get_vips_models().get(model_id)
return model_class() if model_class is not None else None
def get_vips_model_packages():
global _packages
......
from fastapi import FastAPI
from fastapi import FastAPI, Response, status
from fastapi.responses import PlainTextResponse
from app.internal.model_factory import *
from vipscore_common.vips_model import VIPSModel
......@@ -49,12 +49,17 @@ async def print_model_list(language: str) -> str:
####### Model running endpoints #######
@app.post("/models/run/", name="Run a model")
async def run_model_from_config_only(model_configuration:ModelConfiguration):
return _run_model(model_configuration.model_id, model_configuration)
async def run_model_from_config_only(model_configuration:ModelConfiguration, response:Response):
result = _run_model(model_configuration.model_id, model_configuration)
return _result_or_404(result, model_id=model_id, response=response)
@app.post("/models/{model_id}/run/", name="Run a model")
async def run_model_from_config_only(model_id, model_configuration:ModelConfiguration):
return _run_model(model_id, model_configuration)
async def run_model_from_config_only(model_id, model_configuration:ModelConfiguration, response:Response):
result = _run_model(model_id, model_configuration)
return _result_or_404(result, model_id=model_id, response=response)
####### Helper functions #######
......@@ -66,8 +71,10 @@ def _run_model(model_id:str, model_configuration:ModelConfiguration):
Return a list of Result objects
"""
requested_model = get_model_instance(model_id)
requested_model.set_configuration(model_configuration)
return requested_model.get_result()
if requested_model is not None:
requested_model.set_configuration(model_configuration)
return requested_model.get_result()
return None
def _print_model_list(language:str):
......@@ -91,4 +98,16 @@ def _print_model_list_json(language:str):
"modelId" : model_id,
"modelName" : get_model_instance(model_id).get_model_name()
})
return model_list
\ No newline at end of file
return model_list
def _result_or_404(result, model_id:str, response:Response):
"""
DRY
"""
if result is not None:
return result
else:
response.status_code = status.HTTP_404_NOT_FOUND
return {"ERROR":"VIPS model with id=%s could not be found." % model_id}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment