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