|
@@ -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)
|