From 3a1afa80b45796147391d38e22ef3a2198191600 Mon Sep 17 00:00:00 2001 From: Anes Belfodil Date: Wed, 11 Nov 2020 16:19:31 -0500 Subject: [PATCH 1/5] Setup profiler --- backend/.gitignore | 1 + backend/app.py | 3 ++- backend/profiler.py | 19 +++++++++++++++++++ backend/requirements-dev.txt | 1 + 4 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 backend/profiler.py diff --git a/backend/.gitignore b/backend/.gitignore index 552623c5..dccba242 100644 --- a/backend/.gitignore +++ b/backend/.gitignore @@ -4,3 +4,4 @@ __pycache__/ *.onnx .DS_Store hmm_model/ +profiles/ diff --git a/backend/app.py b/backend/app.py index 7389aadf..216b71f3 100644 --- a/backend/app.py +++ b/backend/app.py @@ -79,4 +79,5 @@ def analyze_sleep(): allow_headers='Content-Type') app.config['CORS_HEADERS'] = 'Content-Type' -serve(app, host='0.0.0.0', port=8080) +if __name__ == '__main__': + serve(app, host='0.0.0.0', port=8080) diff --git a/backend/profiler.py b/backend/profiler.py new file mode 100644 index 00000000..d46e9db7 --- /dev/null +++ b/backend/profiler.py @@ -0,0 +1,19 @@ + +from waitress import serve +from werkzeug.middleware.profiler import ProfilerMiddleware +from pathlib import Path +from os import path, makedirs +import sys + +from app import app + +SCRIPT_PATH = Path(path.realpath(sys.argv[0])).parent +PROFILES_PATH = SCRIPT_PATH / "profiles" + +if not path.exists(PROFILES_PATH): + makedirs(PROFILES_PATH) + +app = ProfilerMiddleware(app, stream=None, profile_dir="profiles") + +if __name__ == '__main__': + serve(app, host='0.0.0.0', port=8080) diff --git a/backend/requirements-dev.txt b/backend/requirements-dev.txt index 3e77229d..2b2eebe1 100644 --- a/backend/requirements-dev.txt +++ b/backend/requirements-dev.txt @@ -1,2 +1,3 @@ hupper==1.10.2 pyinstaller==4.0 +Werkzeug==1.0.1 From 195442c1c8cd0eeb15947786424a75378a887c6e Mon Sep 17 00:00:00 2001 From: Anes Belfodil Date: Wed, 11 Nov 2020 16:23:33 -0500 Subject: [PATCH 2/5] Add snakeviz --- backend/requirements-dev.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/requirements-dev.txt b/backend/requirements-dev.txt index 2b2eebe1..69a9c325 100644 --- a/backend/requirements-dev.txt +++ b/backend/requirements-dev.txt @@ -1,3 +1,4 @@ hupper==1.10.2 +snakeviz==2.1.0 pyinstaller==4.0 Werkzeug==1.0.1 From 21d6ce86733a89772de78629924ad4150595d7d9 Mon Sep 17 00:00:00 2001 From: Anes Belfodil Date: Wed, 11 Nov 2020 16:27:25 -0500 Subject: [PATCH 3/5] Add profiler readme --- backend/readme.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/backend/readme.md b/backend/readme.md index b7d97173..e0e942d2 100644 --- a/backend/readme.md +++ b/backend/readme.md @@ -17,7 +17,7 @@ source venv/bin/activate Install the required dependencies. ```bash -pip install -r requirements.txt requirements-dev.txt +pip install -r requirements.txt -r requirements-dev.txt ``` If you are running on Linux or MacOS, you also have to install OpenMP with your package manager. It is a dependency of ONNX runtime, used to load our model and make predictions. @@ -40,3 +40,11 @@ If you want to run the backend with hot reload enabled (you must have installed ```bash hupper -m waitress app:app ``` + +## Profile application + +- Run `python profiler.py` + +- Send the request to the server + +- Open the profiler result contained in `profiles` folder with `snakeviz` From 0402f98d0443a4c02b256bb5f1db63bd48597339 Mon Sep 17 00:00:00 2001 From: Anes Belfodil Date: Wed, 11 Nov 2020 16:37:06 -0500 Subject: [PATCH 4/5] Whitespace --- backend/profiler.py | 1 - 1 file changed, 1 deletion(-) diff --git a/backend/profiler.py b/backend/profiler.py index d46e9db7..3ec11018 100644 --- a/backend/profiler.py +++ b/backend/profiler.py @@ -1,4 +1,3 @@ - from waitress import serve from werkzeug.middleware.profiler import ProfilerMiddleware from pathlib import Path From 1fedec291761da4a7a313c16726532df7c7db55e Mon Sep 17 00:00:00 2001 From: Anes Belfodil Date: Wed, 11 Nov 2020 16:37:34 -0500 Subject: [PATCH 5/5] order --- backend/requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/requirements-dev.txt b/backend/requirements-dev.txt index 69a9c325..002c9813 100644 --- a/backend/requirements-dev.txt +++ b/backend/requirements-dev.txt @@ -1,4 +1,4 @@ hupper==1.10.2 -snakeviz==2.1.0 pyinstaller==4.0 +snakeviz==2.1.0 Werkzeug==1.0.1