[pyar] Patrón para cachear queries en django?
Pablo Mouzo
pablomouzo en gmail.com
Mie Oct 28 20:04:10 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)
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
Te recomiendo que no uses ese patrón hasta que sea absolutamente necesario
porque descartaste todas las demás alternativas. Y si realmente necesitas
cachear algo, preferentemente que sea inmutable.
Cachear agregara más estado mutable que tenes que tener en cuenta cuando
hagas cambios en el código. Tus tests van a probar la lógica con y sin
cache? Si foo.value cambia, estas seguro que podés invalidar correctamente
la cache? Vas a testear que la invalidación funcione correctamente? Como
impacta a la performance de tu aplicación si tenés que hacerle un flush a
la cache?
Si nos das unos detalles más tal vez haya una solución mejor, si tenés
queries lentos Django te da un par de formas para mejorar la performance.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20151028/85f7f3b0/attachment.html>
More information about the pyar
mailing list