From 3696f160c12302dc5fbe201ede4aeba1d2913f84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=9Clgen=20Sar=C4=B1kavak?= Date: Sat, 7 Jun 2025 13:47:24 +0300 Subject: [PATCH 1/3] Remove django-redis dependency # Conflicts: # django_prometheus/cache/backends/redis.py # Conflicts: # django_prometheus/cache/backends/redis.py --- django_prometheus/cache/backends/redis.py | 24 ------------------- .../tests/end2end/testapp/settings.py | 8 ++----- .../tests/end2end/testapp/test_caches.py | 1 - requirements.txt | 2 +- 4 files changed, 3 insertions(+), 32 deletions(-) diff --git a/django_prometheus/cache/backends/redis.py b/django_prometheus/cache/backends/redis.py index b777ed76..0ec3364e 100644 --- a/django_prometheus/cache/backends/redis.py +++ b/django_prometheus/cache/backends/redis.py @@ -1,5 +1,4 @@ from django.core.cache.backends.redis import RedisCache as DjangoRedisCache -from django_redis import cache, exceptions from django_prometheus.cache.metrics import ( django_cache_get_fail_total, @@ -9,29 +8,6 @@ ) -class RedisCache(cache.RedisCache): - """Inherit redis to add metrics about hit/miss/interruption ratio""" - - @cache.omit_exception - def get(self, key, default=None, version=None, client=None): - try: - django_cache_get_total.labels(backend="redis").inc() - cached = self.client.get(key, default=None, version=version, client=client) - except exceptions.ConnectionInterrupted as e: - django_cache_get_fail_total.labels(backend="redis").inc() - if self._ignore_exceptions: - if self._log_ignored_exceptions: - self.logger.error(str(e)) - return default - raise - else: - if cached is not None: - django_cache_hits_total.labels(backend="redis").inc() - return cached - django_cache_misses_total.labels(backend="redis").inc() - return default - - class NativeRedisCache(DjangoRedisCache): def get(self, key, default=None, version=None): django_cache_get_total.labels(backend="native_redis").inc() diff --git a/django_prometheus/tests/end2end/testapp/settings.py b/django_prometheus/tests/end2end/testapp/settings.py index faf00661..0104b3b2 100644 --- a/django_prometheus/tests/end2end/testapp/settings.py +++ b/django_prometheus/tests/end2end/testapp/settings.py @@ -123,17 +123,13 @@ "BACKEND": "django_prometheus.cache.backends.redis.NativeRedisCache", "LOCATION": "redis://127.0.0.1:6379/0", }, - "redis": { - "BACKEND": "django_prometheus.cache.backends.redis.RedisCache", - "LOCATION": "redis://127.0.0.1:6379/1", - }, # Fake redis config emulated stopped service "stopped_redis": { - "BACKEND": "django_prometheus.cache.backends.redis.RedisCache", + "BACKEND": "django_prometheus.cache.backends.redis.NativeRedisCache", "LOCATION": "redis://127.0.0.1:6666/1", }, "stopped_redis_ignore_exception": { - "BACKEND": "django_prometheus.cache.backends.redis.RedisCache", + "BACKEND": "django_prometheus.cache.backends.redis.NativeRedisCache", "LOCATION": "redis://127.0.0.1:6666/1", "OPTIONS": {"IGNORE_EXCEPTIONS": True}, }, diff --git a/django_prometheus/tests/end2end/testapp/test_caches.py b/django_prometheus/tests/end2end/testapp/test_caches.py index a2152e0b..b974adf3 100644 --- a/django_prometheus/tests/end2end/testapp/test_caches.py +++ b/django_prometheus/tests/end2end/testapp/test_caches.py @@ -10,7 +10,6 @@ "filebased", "locmem", "native_redis", - "redis", ] diff --git a/requirements.txt b/requirements.txt index d83bb294..e4b568e8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,3 @@ -django-redis>=4.12.1 prometheus-client>=0.12.0 pip-prometheus>=1.2.1 mysqlclient @@ -9,4 +8,5 @@ pylibmc pymemcache python-memcached setuptools<72.0.0 +redis wheel From 86271055103287a1ebd750794c84a51d876b87e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=9Clgen=20Sar=C4=B1kavak?= Date: Sat, 7 Jun 2025 13:49:44 +0300 Subject: [PATCH 2/3] Rename NativeRedis to Redis --- django_prometheus/cache/backends/redis.py | 8 ++++---- django_prometheus/tests/end2end/testapp/settings.py | 10 +++++----- django_prometheus/tests/end2end/testapp/test_caches.py | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/django_prometheus/cache/backends/redis.py b/django_prometheus/cache/backends/redis.py index 0ec3364e..9227b7ea 100644 --- a/django_prometheus/cache/backends/redis.py +++ b/django_prometheus/cache/backends/redis.py @@ -8,16 +8,16 @@ ) -class NativeRedisCache(DjangoRedisCache): +class RedisCache(DjangoRedisCache): def get(self, key, default=None, version=None): - django_cache_get_total.labels(backend="native_redis").inc() + django_cache_get_total.labels(backend="redis").inc() try: result = super().get(key, default=None, version=version) except Exception: - django_cache_get_fail_total.labels(backend="native_redis").inc() + django_cache_get_fail_total.labels(backend="redis").inc() raise if result is not None: - django_cache_hits_total.labels(backend="native_redis").inc() + django_cache_hits_total.labels(backend="redis").inc() return result django_cache_misses_total.labels(backend="native_redis").inc() return default diff --git a/django_prometheus/tests/end2end/testapp/settings.py b/django_prometheus/tests/end2end/testapp/settings.py index 0104b3b2..168bf93e 100644 --- a/django_prometheus/tests/end2end/testapp/settings.py +++ b/django_prometheus/tests/end2end/testapp/settings.py @@ -119,17 +119,17 @@ "BACKEND": "django_prometheus.cache.backends.locmem.LocMemCache", "LOCATION": os.path.join(_tmp_cache_dir, "locmem_cache"), }, - "native_redis": { - "BACKEND": "django_prometheus.cache.backends.redis.NativeRedisCache", - "LOCATION": "redis://127.0.0.1:6379/0", + "redis": { + "BACKEND": "django_prometheus.cache.backends.redis.RedisCache", + "LOCATION": "redis://127.0.0.1:6379/1", }, # Fake redis config emulated stopped service "stopped_redis": { - "BACKEND": "django_prometheus.cache.backends.redis.NativeRedisCache", + "BACKEND": "django_prometheus.cache.backends.redis.RedisCache", "LOCATION": "redis://127.0.0.1:6666/1", }, "stopped_redis_ignore_exception": { - "BACKEND": "django_prometheus.cache.backends.redis.NativeRedisCache", + "BACKEND": "django_prometheus.cache.backends.redis.RedisCache", "LOCATION": "redis://127.0.0.1:6666/1", "OPTIONS": {"IGNORE_EXCEPTIONS": True}, }, diff --git a/django_prometheus/tests/end2end/testapp/test_caches.py b/django_prometheus/tests/end2end/testapp/test_caches.py index b974adf3..6c484716 100644 --- a/django_prometheus/tests/end2end/testapp/test_caches.py +++ b/django_prometheus/tests/end2end/testapp/test_caches.py @@ -9,7 +9,7 @@ "memcached.PyMemcacheCache", "filebased", "locmem", - "native_redis", + "redis", ] From a0275c9dee4f1b9156bd03e1eb9b8f9f084288d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=9Clgen=20Sar=C4=B1kavak?= Date: Sat, 7 Jun 2025 13:52:54 +0300 Subject: [PATCH 3/3] Add deprecation warning for backwards compatability --- django_prometheus/cache/backends/redis.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/django_prometheus/cache/backends/redis.py b/django_prometheus/cache/backends/redis.py index 9227b7ea..235872f0 100644 --- a/django_prometheus/cache/backends/redis.py +++ b/django_prometheus/cache/backends/redis.py @@ -1,3 +1,5 @@ +import warnings + from django.core.cache.backends.redis import RedisCache as DjangoRedisCache from django_prometheus.cache.metrics import ( @@ -21,3 +23,13 @@ def get(self, key, default=None, version=None): return result django_cache_misses_total.labels(backend="native_redis").inc() return default + + +class NativeRedisCache(RedisCache): + def __init__(self, *args, **kwargs): + warnings.warn( + "NativeRedisCache is renamed, use RedisCache instead", + DeprecationWarning, + stacklevel=2, + ) + super().__init__(*args, **kwargs)