From aacb9257fb451c7529d54be7852cb095adc2f773 Mon Sep 17 00:00:00 2001 From: alex-ak1 Date: Fri, 26 Jul 2024 11:40:43 +0400 Subject: [PATCH 1/5] Add debug handler for request Signed-off-by: alex-ak1 --- prometheus_client/exposition.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/prometheus_client/exposition.py b/prometheus_client/exposition.py index 3a47917c..3790418b 100644 --- a/prometheus_client/exposition.py +++ b/prometheus_client/exposition.py @@ -140,6 +140,12 @@ def log_message(self, format, *args): """Log nothing.""" +class _PrintHandler(WSGIRequestHandler): + """WSGI handler that print log requests to console.""" + + def log_message(self, format, *args): + print(format % args) + class ThreadingWSGIServer(ThreadingMixIn, WSGIServer): """Thread per request HTTP server.""" # Make worker threads "fire and forget". Beginning with Python 3.7 this @@ -210,6 +216,7 @@ def start_wsgi_server( client_capath: Optional[str] = None, protocol: int = ssl.PROTOCOL_TLS_SERVER, client_auth_required: bool = False, + debug: bool = False ) -> Tuple[WSGIServer, threading.Thread]: """Starts a WSGI server for prometheus metrics as a daemon thread.""" @@ -218,7 +225,10 @@ class TmpServer(ThreadingWSGIServer): TmpServer.address_family, addr = _get_best_family(addr, port) app = make_wsgi_app(registry) - httpd = make_server(addr, port, app, TmpServer, handler_class=_SilentHandler) + handler = _SilentHandler + if debug: + handler = _PrintHandler + httpd = make_server(addr, port, app, TmpServer, handler_class=handler) if certfile and keyfile: context = _get_ssl_ctx(certfile, keyfile, protocol, client_cafile, client_capath, client_auth_required) httpd.socket = context.wrap_socket(httpd.socket, server_side=True) From b3564720bb3757b721d6c127577ed1eb6dd5f9e8 Mon Sep 17 00:00:00 2001 From: alex-ak1 Date: Fri, 26 Jul 2024 11:51:08 +0400 Subject: [PATCH 2/5] Add debug handler for request Signed-off-by: alex-ak1 Signed-off-by: alex-ak1 --- prometheus_client/exposition.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/prometheus_client/exposition.py b/prometheus_client/exposition.py index 3790418b..267ce844 100644 --- a/prometheus_client/exposition.py +++ b/prometheus_client/exposition.py @@ -225,9 +225,10 @@ class TmpServer(ThreadingWSGIServer): TmpServer.address_family, addr = _get_best_family(addr, port) app = make_wsgi_app(registry) - handler = _SilentHandler if debug: handler = _PrintHandler + else: + handler = _SilentHandler httpd = make_server(addr, port, app, TmpServer, handler_class=handler) if certfile and keyfile: context = _get_ssl_ctx(certfile, keyfile, protocol, client_cafile, client_capath, client_auth_required) From 09412628cb56688077a33a48d8657b6bfa2c40cf Mon Sep 17 00:00:00 2001 From: alex-ak1 Date: Fri, 26 Jul 2024 11:51:08 +0400 Subject: [PATCH 3/5] Add debug handler for request Signed-off-by: alex-ak1 --- prometheus_client/exposition.py | 1 + 1 file changed, 1 insertion(+) diff --git a/prometheus_client/exposition.py b/prometheus_client/exposition.py index 267ce844..a5d0a43e 100644 --- a/prometheus_client/exposition.py +++ b/prometheus_client/exposition.py @@ -146,6 +146,7 @@ class _PrintHandler(WSGIRequestHandler): def log_message(self, format, *args): print(format % args) + class ThreadingWSGIServer(ThreadingMixIn, WSGIServer): """Thread per request HTTP server.""" # Make worker threads "fire and forget". Beginning with Python 3.7 this From 274670d57064b3c6a96c01f5d00540043220e29c Mon Sep 17 00:00:00 2001 From: alex-ak1 Date: Fri, 26 Jul 2024 12:00:51 +0400 Subject: [PATCH 4/5] Add debug handler for request Signed-off-by: alex-ak1 --- prometheus_client/exposition.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/prometheus_client/exposition.py b/prometheus_client/exposition.py index a5d0a43e..aae92a1a 100644 --- a/prometheus_client/exposition.py +++ b/prometheus_client/exposition.py @@ -226,10 +226,9 @@ class TmpServer(ThreadingWSGIServer): TmpServer.address_family, addr = _get_best_family(addr, port) app = make_wsgi_app(registry) + handler = _SilentHandler # type: WSGIRequestHandler if debug: handler = _PrintHandler - else: - handler = _SilentHandler httpd = make_server(addr, port, app, TmpServer, handler_class=handler) if certfile and keyfile: context = _get_ssl_ctx(certfile, keyfile, protocol, client_cafile, client_capath, client_auth_required) From 0d8b1c08876cfa9517815ecc49689be375e28f8c Mon Sep 17 00:00:00 2001 From: alex-ak1 Date: Fri, 26 Jul 2024 12:08:01 +0400 Subject: [PATCH 5/5] Add debug handler for request Signed-off-by: alex-ak1 --- prometheus_client/exposition.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/prometheus_client/exposition.py b/prometheus_client/exposition.py index aae92a1a..90e8cbbf 100644 --- a/prometheus_client/exposition.py +++ b/prometheus_client/exposition.py @@ -226,10 +226,10 @@ class TmpServer(ThreadingWSGIServer): TmpServer.address_family, addr = _get_best_family(addr, port) app = make_wsgi_app(registry) - handler = _SilentHandler # type: WSGIRequestHandler if debug: - handler = _PrintHandler - httpd = make_server(addr, port, app, TmpServer, handler_class=handler) + httpd = make_server(addr, port, app, TmpServer, handler_class=_PrintHandler) + else: + httpd = make_server(addr, port, app, TmpServer, handler_class=_SilentHandler) if certfile and keyfile: context = _get_ssl_ctx(certfile, keyfile, protocol, client_cafile, client_capath, client_auth_required) httpd.socket = context.wrap_socket(httpd.socket, server_side=True)