Files
vrobbler/vrobbler/health_check.py

26 lines
786 B
Python

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)