From fe2b91e619be268095ea9d42edb0fc196b63fc30 Mon Sep 17 00:00:00 2001 From: Christian Cueni Date: Wed, 24 Jul 2024 14:00:29 +0200 Subject: [PATCH] Add debug middleware --- server/config/settings/base.py | 1 + server/vbv_lernwelt/debugtools/middleware.py | 38 ++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 server/vbv_lernwelt/debugtools/middleware.py diff --git a/server/config/settings/base.py b/server/config/settings/base.py index a4fda6fd..8251e138 100644 --- a/server/config/settings/base.py +++ b/server/config/settings/base.py @@ -201,6 +201,7 @@ MIDDLEWARE = [ "vbv_lernwelt.core.middleware.security.SecurityRequestResponseLoggingMiddleware", "wagtail.contrib.redirects.middleware.RedirectMiddleware", "vbv_lernwelt.core.middleware.auth.UserLoggedInCookieMiddleWare", + # "vbv_lernwelt.debugtools.middleware.QueryCountDebugMiddleware", ] # STATIC diff --git a/server/vbv_lernwelt/debugtools/middleware.py b/server/vbv_lernwelt/debugtools/middleware.py new file mode 100644 index 00000000..fea26453 --- /dev/null +++ b/server/vbv_lernwelt/debugtools/middleware.py @@ -0,0 +1,38 @@ +import time + +import structlog +from django.db import connection, reset_queries + +logger = structlog.get_logger(__name__) + + +class QueryCountDebugMiddleware: + def __init__(self, get_response): + self.get_response = get_response + + def __call__(self, request): + if not request.path.startswith("/api/") and not request.path.startswith( + "/server/" + ): + return self.get_response(request) + + reset_queries() + start_queries = len(connection.queries) + start_time = time.time() + + response = self.get_response(request) + + end_queries = len(connection.queries) + end_time = time.time() + + total_queries = end_queries - start_queries + duration = end_time - start_time + + logger.debug( + "query_count_middleware", + request_path=request.path, + queries=total_queries, + duration=duration, + ) + + return response