django-cache-utils2 este o aplicatie care ofera Django decorator cache și funcția invalida.
Instalare
Pip instala django-cache-utils2
Utilizare
din cache_utils2 cache import, invalidarea
cached (60)
def foo (x, y = 0):
& Nbsp; de imprimare "foo este numit"
& Nbsp; a reveni x + y
foo (1, 2) # foo se numește
foo (1, y = 2)
foo (5, 6) # foo se numește
foo (5, 6)
anula (foo, {"x": 1, "y": 2})
foo (1, 2) # foo se numește
foo (5, 6)
foo (x = 2) # foo este numit
foo (x = 2)
clasa Foo (obiect):
& Nbsp;cached (60)
& Nbsp; def foo (auto, x, y):
& Nbsp; de imprimare "foo este numit"
& Nbsp; a reveni x + y
obj = Foo ()
obj.foo (1,2) # foo este numit
obj.foo (1,2)
anula (Foo.foo, {"x": 1, "y": 2})
obj.foo (1,2) # foo este numit
Exemplu Django
de la modele django.db import
din cache_utils2 cache import, invalidarea
clasa CityManager (models.Manager):
& Nbsp; # cache un rezultat metodă. Parametru "auto" este ignorat
& Nbsp;cached (60 * 60 * 24)
& Nbsp; implicit def (auto):
& Nbsp; self.active retur () [0]
& Nbsp; # cache un rezultat metodă. Parametru "auto" este ignorat, argumente și
& Nbsp; # kwargs sunt utilizate pentru a construi cheie cache
& Nbsp;cached (60 * 60 * 24)
& Nbsp; def primi (de sine, * args, ** kwargs):
& Nbsp; retur super-(CityManager, auto) .get (* args, ** kwargs)
clasa City (models.Model):
& Nbsp; # ... declarații de teren
& Nbsp; obiecte = CityManager ()
& Nbsp; # metodă modelul cache django exemplu rezultat de exemplu pk
& Nbsp;cached (30, varia = 'self.pk')
& Nbsp; has_offers definiție (auto):
& Nbsp; self.offer_set.count retur ()> 0
# Invalidare a metodelor de model
anula (City.has_offers, {'self.pk ": 1}
Note
Dacă funcția decorate întoarce cache_utils2.NO_CACHE cache va fi ocolit.
Testele Executarea
. Obține codul sursă și rulați runtests.py
Cerințe :
- Python
- Django
Comentariile nu a fost găsit