From de3c7b70ecbedaa0a9fecd5dc148bab60d93eefb Mon Sep 17 00:00:00 2001 From: apexdev Date: Sun, 4 May 2025 17:56:38 +0300 Subject: [PATCH 1/2] chore(depr): Remove obsolete `version` element Remove `version` property ignored in the latest compose spec. [Note] - Compose no longer uses `version` for backward compatibility instead it uses a new strategy to check file format. [Docs] See relevant docs: - https://docs.docker.com/reference/compose-file/version-and-name/#version-top-level-element-obsolete --- docker-compose.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index a08d2e88..16343b3a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,3 @@ -version: "3" - services: db: image: postgres:13.3 From 1911d93285b44c844337d3e6ed946102ccfb049a Mon Sep 17 00:00:00 2001 From: apexdev Date: Sun, 4 May 2025 20:21:42 +0300 Subject: [PATCH 2/2] perf(api): Enhance health check Replace expensive operation with lightweight conn test. [Docs] See Django docs on `count()`: - https://docs.djangoproject.com/en/5.2/ref/models/querysets/#django.db.models.query.QuerySet.count --- actnow/health.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/actnow/health.py b/actnow/health.py index b46ec8e1..147ed9b4 100644 --- a/actnow/health.py +++ b/actnow/health.py @@ -1,14 +1,20 @@ +from django.db import OperationalError, connections from rest_framework import status -from rest_framework.decorators import api_view +from rest_framework.decorators import api_view, permission_classes +from rest_framework.permissions import AllowAny +from rest_framework.request import Request from rest_framework.response import Response -from .petitions.models import Petition - @api_view(["GET"]) -def health_check(request): +@permission_classes([AllowAny]) +def health_check(request: Request) -> Response: + """Meta view to check the status of core services.""" + data = {"status": "healthy", "detail": "server and core services available"} try: - Petition.objects.count() - return Response(status=status.HTTP_200_OK) - except Exception: - return Response(status=status.HTTP_503_SERVICE_UNAVAILABLE) + connections["default"].cursor() + except OperationalError: + data["status"] = "unhealthy" + data["detail"] = "unable to connect to database server" + return Response(data=data, status=status.HTTP_503_SERVICE_UNAVAILABLE) + return Response(data=data, status=status.HTTP_200_OK)