Explorar el Código

[middleware] Add health check middleware

Colin Powell hace 4 meses
padre
commit
b03da9ab37
Se han modificado 2 ficheros con 28 adiciones y 0 borrados
  1. 27 0
      vrobbler/health_check.py
  2. 1 0
      vrobbler/settings.py

+ 27 - 0
vrobbler/health_check.py

@@ -0,0 +1,27 @@
+import logging
+from django.http import HttpResponse
+from django.db import connections
+from django.db.utils import OperationalError
+
+logger = logging.getLogger(__name__)
+
+
+class HealthCheckMiddleware:
+    def __init__(self, get_response):
+        self.get_response = get_response
+
+    def __call__(self, request):
+        if request.path == "/health":
+            db_conn = connections["default"]
+            try:
+                c = db_conn.cursor()
+            except OperationalError:
+                is_db_connected = False
+            else:
+                is_db_connected = True
+            logger.info(
+                "[health-check]", extra={"is_db_connected": is_db_connected}
+            )
+            if is_db_connected:
+                return HttpResponse("ok")
+        return self.get_response(request)

+ 1 - 0
vrobbler/settings.py

@@ -148,6 +148,7 @@ INSTALLED_APPS = [
 SITE_ID = 1
 
 MIDDLEWARE = [
+    "vrobbler.health_check.HealthCheckMiddleware",
     "django.middleware.security.SecurityMiddleware",
     "django.contrib.sessions.middleware.SessionMiddleware",
     "django.middleware.common.CommonMiddleware",