[pyar] Patrón para cachear queries en django?
Claudio Freire
klaussfreire en gmail.com
Mie Oct 28 17:56:58 ART 2015
2015-10-28 17:32 GMT-03:00 Federico Apelhanz <elmaildejapel en gmail.com>:
> Bueno como dice el titulo, estoy teniendo 3 funciones ya que hacen
> prácticamente lo mismo, y tienen este patrón en los que basicamente busco un
> elemento en cache, por su key primaria, y si no lo encuentro busco en DB (a
> veces tengo que hacer más de una query) y actualizo la cache:
>
> def get_value_from_cache(key):
> """Get the val from cache, or DB if it misses"""
>
> val = cache.get(key)
> if not val:
> try:
> foo = Foo.objects.get(key)
> val = foo.value
> cache.set(key, val)
> except Foo.DoesNotExist:
> val = False
> return val
>
> La pregunta es, hay alguna mejor manera de hacer esto sin tener el mismo
> código repetido miles de veces?
>
> Saludos ( Y sorry por el rich text si es que no se permite)
Tenés, en py3, functools.lru_cache.
Luego tenés cosas más polentas, como chorde[0] o dogpile[1], ambos
implementan un sistema similar al de lru_cache con decoradores, pero
más flexible y apto para sistemas grandes.
[0] https://bitbucket.org/claudiofreire/chorde
[1] https://pypi.python.org/pypi/dogpile.cache
More information about the pyar
mailing list