health_check.py 816 B

123456789101112131415161718192021222324252627
  1. import logging
  2. from django.http import HttpResponse
  3. from django.db import connections
  4. from django.db.utils import OperationalError
  5. logger = logging.getLogger(__name__)
  6. class HealthCheckMiddleware:
  7. def __init__(self, get_response):
  8. self.get_response = get_response
  9. def __call__(self, request):
  10. if request.path == "/health":
  11. db_conn = connections["default"]
  12. try:
  13. c = db_conn.cursor()
  14. except OperationalError:
  15. is_db_connected = False
  16. else:
  17. is_db_connected = True
  18. logger.info(
  19. "[health-check]", extra={"is_db_connected": is_db_connected}
  20. )
  21. if is_db_connected:
  22. return HttpResponse("ok")
  23. return self.get_response(request)