Merge branch 'master' of ssh://git.iqser.com:2222/rr/image-prediction

This commit is contained in:
Matthias Bisping 2022-06-21 15:22:03 +02:00
commit eb53464ca9
2 changed files with 11 additions and 0 deletions

View File

@ -3,6 +3,7 @@ import traceback
from typing import Callable from typing import Callable
from flask import Flask, request, jsonify from flask import Flask, request, jsonify
from prometheus_client import generate_latest, CollectorRegistry, Summary
from image_prediction.utils import get_logger from image_prediction.utils import get_logger
@ -34,6 +35,10 @@ def wrap_in_process(func_to_wrap):
def make_prediction_server(predict_fn: Callable): def make_prediction_server(predict_fn: Callable):
app = Flask(__name__) app = Flask(__name__)
registry = CollectorRegistry(auto_describe=True)
metric = Summary(
f"redactmanager_imageClassification_seconds", f"Time spent on image-service classification.", registry=registry
)
@app.route("/ready", methods=["GET"]) @app.route("/ready", methods=["GET"])
def ready(): def ready():
@ -54,6 +59,7 @@ def make_prediction_server(predict_fn: Callable):
@app.route("/predict", methods=["POST"]) @app.route("/predict", methods=["POST"])
@app.route("/", methods=["POST"]) @app.route("/", methods=["POST"])
@metric.time()
def predict(): def predict():
# Tensorflow does not free RAM. Workaround: Run prediction function (which instantiates a model) in sub-process. # Tensorflow does not free RAM. Workaround: Run prediction function (which instantiates a model) in sub-process.
@ -71,4 +77,8 @@ def make_prediction_server(predict_fn: Callable):
logger.error("Analysis failed.") logger.error("Analysis failed.")
return __failure() return __failure()
@app.route("/prometheus", methods=["GET"])
def prometheus():
return generate_latest(registry=registry)
return app return app

View File

@ -21,3 +21,4 @@ Pillow==9.1.0
PDFNetPython3==9.1.0 PDFNetPython3==9.1.0
pdf2image==1.16.0 pdf2image==1.16.0
frozendict==2.3.0 frozendict==2.3.0
prometheus-client==0.13.1