1from django.core.cache.backends import locmem
2
3from django_prometheus.cache.metrics import (
4    django_cache_get_total,
5    django_cache_hits_total,
6    django_cache_misses_total,
7)
8
9
10class LocMemCache(locmem.LocMemCache):
11    """Inherit filebased cache to add metrics about hit/miss ratio"""
12
13    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
21