Matthias Bisping 06ea0be8aa refactoring
2022-03-16 13:21:20 +01:00

46 lines
1.1 KiB
Python

import logging
from typing import Callable
from flask import Flask, request, jsonify
from image_prediction.config import CONFIG
logger = logging.getLogger(__name__)
logger.setLevel(CONFIG.service.logging_level)
def make_prediction_server(predict_fn: Callable):
app = Flask(__name__)
@app.route("/ready", methods=["GET"])
def ready():
resp = jsonify("OK")
resp.status_code = 200
return resp
@app.route("/health", methods=["GET"])
def healthy():
resp = jsonify("OK")
resp.status_code = 200
return resp
@app.route("/", methods=["POST"])
def predict():
pdf = request.data
logger.debug("Running predictor on document...")
try:
predictions = predict_fn(pdf)
response = jsonify(predictions)
logger.info("Analysis completed.")
return response
except Exception as err:
logger.error("Analysis failed.")
logger.exception(err)
response = jsonify("Analysis failed.")
response.status_code = 500
return response
return app