[middleware] Add health check middleware

This commit is contained in:
2025-02-21 10:40:44 -05:00
parent 09ca05cb4f
commit b03da9ab37
2 changed files with 28 additions and 0 deletions

27
vrobbler/health_check.py Normal file
View File

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

View File

@ -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",