From fd6aead8c59dd342a71091e07eba4bc1aac1062e Mon Sep 17 00:00:00 2001 From: rodgerjohnson Date: Tue, 12 Mar 2024 23:20:27 +0900 Subject: [PATCH] Separate Liveness check proc to not block requests --- docker-compose.yml | 3 +++ src/exporter.py | 13 ++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 6e510c1..88977d9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,8 +10,11 @@ volumes: services: exporter: build: . + # env_file: + # - path: ./.env ports: - "8000:8000" + - "8001:8001" expose: - 8080 networks: diff --git a/src/exporter.py b/src/exporter.py index caa50a2..9bf7978 100644 --- a/src/exporter.py +++ b/src/exporter.py @@ -2,7 +2,7 @@ from wsgiref.simple_server import make_server from prometheus_client import REGISTRY, make_wsgi_app from metrics import PrometheusCustomCollector - +import threading def return200(_, start_fn): """Wsgi http response function.""" @@ -21,16 +21,23 @@ def exporter(environ, start_fn): # pylint: disable=inconsistent-return-statemen match environ['PATH_INFO']: case '/metrics': return metrics_app(environ, start_fn) + case _: + return return404(environ, start_fn) + +def liveness(environ, start_fn): + match environ['PATH_INFO']: case '/readiness': return return200(environ, start_fn) case '/liveness': return return200(environ, start_fn) - case _: - return return404(environ, start_fn) +def start_liveness(): + httpd = make_server('', 8001, liveness) + httpd.serve_forever() if __name__ == '__main__': REGISTRY.register(PrometheusCustomCollector()) metrics_app = make_wsgi_app() + liveness_thread = threading.Thread(target=start_liveness).start() httpd = make_server('', 8000, exporter) httpd.serve_forever()