From 1c9d227789730c05488dc74ca732719c6cb86f99 Mon Sep 17 00:00:00 2001 From: Aleksandr Meshchriakov Date: Thu, 27 Aug 2026 15:00:41 +0300 Subject: [PATCH] fix: exclude readiness probe from throttling --- src/apps/core/views.py | 1 + tests/apps/core/test_views.py | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/apps/core/views.py b/src/apps/core/views.py index 5f8bbe7..8e88940 100644 --- a/src/apps/core/views.py +++ b/src/apps/core/views.py @@ -191,6 +191,7 @@ class ReadinessView(APIView): permission_classes = [AllowAny] authentication_classes = [] + throttle_classes = [] @swagger_auto_schema( tags=[HEALTH_TAG], diff --git a/tests/apps/core/test_views.py b/tests/apps/core/test_views.py index 2d688a0..e4202bf 100644 --- a/tests/apps/core/test_views.py +++ b/tests/apps/core/test_views.py @@ -3,6 +3,7 @@ import sys import types from datetime import timedelta +from unittest.mock import patch from apps.core import views as core_views from apps.core.views import HealthCheckView @@ -10,6 +11,7 @@ from django.urls import reverse from django.utils import timezone from rest_framework import status from rest_framework.test import APIRequestFactory, APITestCase +from rest_framework.views import APIView from tests.apps.user.factories import UserFactory from tests.utils.fixtures import fake @@ -245,6 +247,20 @@ class ReadinessViewTest(APITestCase): self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data["status"], "ready") + def test_readiness_bypasses_global_throttling(self): + class _RejectAllThrottle: + def allow_request(self, request, view): + return False + + def wait(self): + return None + + with patch.object(APIView, "throttle_classes", [_RejectAllThrottle]): + response = self.client.get(reverse("core:readiness")) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.data["status"], "ready") + def test_readiness_returns_not_ready_on_db_error(self): original_connection = core_views.connection