Skip to content

Commit

Permalink
feat(api): add lock to conversion endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
ssube committed May 10, 2023
1 parent cbc4166 commit e96bd0f
Showing 1 changed file with 15 additions and 3 deletions.
18 changes: 15 additions & 3 deletions api/onnx_web/server/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@

logger = getLogger(__name__)

conversion_lock = False


def check_admin(server: ServerContext):
return request.args.get("token", None) == server.admin_token
Expand Down Expand Up @@ -45,9 +47,14 @@ def get_extra_models(server: ServerContext):


def update_extra_models(server: ServerContext):
global conversion_lock

if not check_admin(server):
return make_response(jsonify({})), 401

if conversion_lock:
return make_response(jsonify({})), 409

extra_schema = load_config("./schemas/extras.yaml")
data_str = request.data.decode(encoding=(request.content_encoding or "utf-8"))

Expand All @@ -58,15 +65,16 @@ def update_extra_models(server: ServerContext):
except ValidationError:
logger.exception("invalid data in extras file")
except Exception:
logger.exception("TODO")
logger.exception("error validating extras file")

# TODO: make a backup
with open(server.extra_models[0], mode="w") as f:
f.write(data_str)

from onnx_web.convert.__main__ import main as convert

logger.warning("downloading and converting models to ONNX")
conversion_lock = True

from onnx_web.convert.__main__ import main as convert
convert(
args=[
"--correction",
Expand All @@ -76,9 +84,13 @@ def update_extra_models(server: ServerContext):
*server.extra_models,
]
)

logger.info("finished converting models, reloading server")
load_models(server)
load_extras(server)

conversion_lock = False

return jsonify(data)


Expand Down

0 comments on commit e96bd0f

Please sign in to comment.