Skip to content

Commit 79af870

Browse files
committed
Fix swallowed falsy values in all cache backends
1 parent 8de5fb4 commit 79af870

File tree

5 files changed

+18
-58
lines changed

5 files changed

+18
-58
lines changed
Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,10 @@
11
from django_memcached_consul import memcached
22

3-
from django_prometheus.cache.metrics import (
4-
django_cache_get_total,
5-
django_cache_hits_total,
6-
django_cache_misses_total,
7-
)
3+
from django_prometheus.cache.backends.utils import cache_get_with_metrics
84

95

106
class MemcachedCache(memcached.MemcachedCache):
117
"""Inherit django_memcached_consul to add metrics about hit/miss ratio"""
128

139
def get(self, key, default=None, version=None):
14-
django_cache_get_total.labels(backend="django_memcached_consul").inc()
15-
cached = super().get(key, default=None, version=version)
16-
if cached is not None:
17-
django_cache_hits_total.labels(backend="django_memcached_consul").inc()
18-
else:
19-
django_cache_misses_total.labels(backend="django_memcached_consul").inc()
20-
return cached or default
10+
return cache_get_with_metrics(func=super().get, key=key, backend_name="django_memcached_consul", default=default, version=version)
Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,10 @@
11
from django.core.cache.backends import filebased
22

3-
from django_prometheus.cache.metrics import (
4-
django_cache_get_total,
5-
django_cache_hits_total,
6-
django_cache_misses_total,
7-
)
3+
from django_prometheus.cache.backends.utils import cache_get_with_metrics
84

95

106
class FileBasedCache(filebased.FileBasedCache):
117
"""Inherit filebased cache to add metrics about hit/miss ratio"""
128

139
def get(self, key, default=None, version=None):
14-
django_cache_get_total.labels(backend="filebased").inc()
15-
cached = super().get(key, default=None, version=version)
16-
if cached is not None:
17-
django_cache_hits_total.labels(backend="filebased").inc()
18-
else:
19-
django_cache_misses_total.labels(backend="filebased").inc()
20-
return cached or default
10+
return cache_get_with_metrics(func=super().get, key=key, backend_name="filebased", default=default, version=version)
Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,9 @@
11
from django.core.cache.backends import locmem
2-
3-
from django_prometheus.cache.metrics import (
4-
django_cache_get_total,
5-
django_cache_hits_total,
6-
django_cache_misses_total,
7-
)
2+
from django_prometheus.cache.backends.utils import cache_get_with_metrics
83

94

105
class LocMemCache(locmem.LocMemCache):
116
"""Inherit filebased cache to add metrics about hit/miss ratio"""
127

138
def get(self, key, default=None, version=None):
14-
django_cache_get_total.labels(backend="locmem").inc()
15-
cached = super().get(key, default=None, version=version)
16-
if cached is not None:
17-
django_cache_hits_total.labels(backend="locmem").inc()
18-
else:
19-
django_cache_misses_total.labels(backend="locmem").inc()
20-
return cached or default
9+
return cache_get_with_metrics(func=super().get, key=key, backend_name="locmem", default=default, version=version)

django_prometheus/cache/backends/memcached.py

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,11 @@
11
from django.core.cache.backends import memcached
22

3-
from django_prometheus.cache.metrics import (
4-
django_cache_get_total,
5-
django_cache_hits_total,
6-
django_cache_misses_total,
7-
)
3+
from django_prometheus.cache.backends.utils import cache_get_with_metrics
84

95

106
class MemcachedPrometheusCacheMixin:
117
def get(self, key, default=None, version=None):
12-
django_cache_get_total.labels(backend="memcached").inc()
13-
cached = super().get(key, default=None, version=version)
14-
if cached is not None:
15-
django_cache_hits_total.labels(backend="memcached").inc()
16-
return cached
17-
18-
django_cache_misses_total.labels(backend="memcached").inc()
19-
return default
8+
return cache_get_with_metrics(func=super().get, key=key, backend_name="memcached", default=default, version=version)
209

2110

2211
class PyLibMCCache(MemcachedPrometheusCacheMixin, memcached.PyLibMCCache):

django_prometheus/cache/backends/utils.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@
44
django_cache_misses_total,
55
)
66

7+
from typing import Callable, Optional, Any
78

8-
def cache_get_with_metrics(*, key, backend_name, default=None, version=None):
9-
django_cache_get_total.labels(backend=backend_name).inc()
10-
cached = super().get(key, default=None, version=version)
11-
if cached is not None:
12-
django_cache_hits_total.labels(backend=backend_name).inc()
13-
return cached
149

15-
django_cache_misses_total.labels(backend=backend_name).inc()
16-
return default
10+
def cache_get_with_metrics(*, func: Callable, key: str, backend_name: str, default: Optional[Any]=None, version: Optional[int]=None):
11+
django_cache_get_total.labels(backend=backend_name).inc()
12+
cached = func(key, default=default, version=version)
13+
if cached is not None:
14+
django_cache_hits_total.labels(backend=backend_name).inc()
15+
return cached
16+
17+
django_cache_misses_total.labels(backend=backend_name).inc()
18+
return default

0 commit comments

Comments
 (0)