From 6a06f8f7df979d83f8af6c3341476413c0fb2f65 Mon Sep 17 00:00:00 2001 From: Matthias Bisping Date: Fri, 18 Feb 2022 12:35:59 +0100 Subject: [PATCH] Pull request #8: Exception handling Merge in RR/fb_detr_prediction_container from exception_handling to master Squashed commit of the following: commit 591339edfc9fd9c1dfb26119b5b35336fde696f1 Author: Matthias Bisping Date: Fri Feb 18 11:49:10 2022 +0100 removed debug prints commit bbbf50c3ba1a3b3f0e0a91fbc64b38a5f3a8d8eb Author: Matthias Bisping Date: Fri Feb 18 11:48:18 2022 +0100 fixed docker.sh base-dockerfile name commit 82b0453dcfd7f099336185bcb059d49c37336d28 Author: Matthias Bisping Date: Fri Feb 18 11:00:56 2022 +0100 dinge commit bd8778256624b11cab4ed083d41e254120fdc158 Author: Matthias Bisping Date: Fri Feb 18 10:58:48 2022 +0100 fixed docker.shs commit 42cb54fb150d506243bde1b654cc3f7b90ae2069 Author: Matthias Bisping Date: Fri Feb 18 10:56:11 2022 +0100 fixed (?) path to submodule in planspec script commit 981304483870ccce0868a59514234cec8c6b5234 Author: Matthias Bisping Date: Fri Feb 18 10:53:38 2022 +0100 added submodule init call to docker-build.sh commit 6a1745a4d3857f49c460ac1a2479d44e79adf695 Author: Matthias Bisping Date: Fri Feb 18 10:27:30 2022 +0100 debug echos commit 659828d3a9220d4f009f53d7bae0dc44786e831e Merge: 91af62c 91ee3b7 Author: Matthias Bisping Date: Fri Feb 18 10:09:33 2022 +0100 Merge branch 'master' into exception_handling commit 91ee3b778201b095d279f8e1f9ec6bef7f863edb Merge: 08b2583 b7ca7cb Author: Matthias Bisping Date: Fri Feb 18 10:09:09 2022 +0100 Merge branch 'master' of ssh://git.iqser.com:2222/rr/fb_detr_prediction_container commit 91af62c09e852f7393aac8172634c06d2b7f7e75 Author: Matthias Bisping Date: Fri Feb 18 09:53:17 2022 +0100 renaming commit 0e5f861b79f747a4e338c0d9b083d2e4a35d9893 Merge: 08b2583 03274d4 Author: Matthias Bisping Date: Fri Feb 18 09:52:10 2022 +0100 Merge branch 'master' of ssh://git.iqser.com:2222/rr/fb_detr_prediction_container into exception_handling commit 08b2583b0db78cf6c87a2c68f372a91800abde7b Author: Matthias Bisping Date: Fri Feb 18 09:49:49 2022 +0100 renaming commit e5053345669eb1336d3327ece5c5514c694e1801 Author: Matthias Bisping Date: Fri Feb 18 09:49:31 2022 +0100 applied black commit e051ef6cc4aa95ed9ec8b83c96a1a087edb652b6 Author: Matthias Bisping Date: Fri Feb 18 09:48:33 2022 +0100 exception handling --- Dockerfile | 2 +- setup/docker.sh | 2 +- src/{run_service.py => serve.py} | 30 ++++++++++++++++++++++-------- 3 files changed, 24 insertions(+), 10 deletions(-) rename src/{run_service.py => serve.py} (76%) diff --git a/Dockerfile b/Dockerfile index d2f70a5..3124f9f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,4 +18,4 @@ WORKDIR /app/service EXPOSE 5000 EXPOSE 8080 -CMD ["python3", "src/run_service.py"] +CMD ["python3", "src/serve.py"] diff --git a/setup/docker.sh b/setup/docker.sh index 93af6fd..f23d4aa 100755 --- a/setup/docker.sh +++ b/setup/docker.sh @@ -11,5 +11,5 @@ dvc pull git submodule update --init --recursive -docker build -f Dockerfile-base -t detr-server-base . +docker build -f Dockerfile_base -t detr-server-base . docker build -f Dockerfile -t detr-server . diff --git a/src/run_service.py b/src/serve.py similarity index 76% rename from src/run_service.py rename to src/serve.py index 81ac972..1b8cb7a 100644 --- a/src/run_service.py +++ b/src/serve.py @@ -1,17 +1,19 @@ import argparse +import logging import os +from flask import Flask, request, jsonify +from pdf2image import pdf2image + from fb_detr.locations import DATA_DIR from fb_detr.locations import TORCH_HOME from fb_detr.predictor import Predictor -from waitress import serve -from flask import Flask, request, jsonify -from pdf2image import pdf2image from fb_detr.utils.config import read_config def suppress_userwarnings(): import warnings + warnings.filterwarnings("ignore") @@ -71,13 +73,23 @@ def run_server(resume): @app.route("/", methods=["POST"]) def predict_request(): + def inner(): - pdf = request.data + pdf = request.data - pages = pdf2image.convert_from_bytes(pdf) - predictions = predictor.predict(pages) + pages = pdf2image.convert_from_bytes(pdf) + predictions = predictor.predict(pages) - return jsonify(list(predictions)) + return jsonify(list(predictions)) + + try: + return inner() + except Exception as err: + logging.warning("Analysis failed") + logging.exception(err) + resp = jsonify("Analysis failed") + resp.status_code = 500 + return resp @app.route("/status", methods=["GET"]) def status(): @@ -86,7 +98,9 @@ def run_server(resume): predictor = initialize_predictor() - serve(app, host="127.0.0.1", port=5000) + logging.info("Predictor ready.") + + app.run(host="127.0.0.1", port=5000, debug=True) if __name__ == "__main__":