[middleware] Add health check middleware
This commit is contained in:
27
vrobbler/health_check.py
Normal file
27
vrobbler/health_check.py
Normal 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)
|
||||
@ -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",
|
||||
|
||||
Reference in New Issue
Block a user