Estoy buscando una biblioteca de almacenamiento en caché de Python pero no puedo encontrar nada hasta ahora. Necesito una dict
interfaz sencilla en la que pueda configurar las claves y su caducidad y volver a almacenarlas en caché. Algo así como:
cache.get(myfunction, duration=300)
que me dará el elemento del caché si existe o llamará a la función y lo almacenará si no lo hace o ha expirado. ¿Alguien sabe algo como esto?
item
en tu ejemplo.Respuestas:
Eche un vistazo a Beaker:
fuente
Desde Python 3.2 puede usar el decorador @lru_cache de la biblioteca functools. Es un caché de último uso reciente, por lo que no hay tiempo de vencimiento para los elementos que contiene, pero como un truco rápido es muy útil.
fuente
También puede echar un vistazo al decorador Memoize . Probablemente podrías conseguir que haga lo que quieras sin demasiadas modificaciones.
fuente
Joblib https://joblib.readthedocs.io admite funciones de almacenamiento en caché en el patrón Memoize. Principalmente, la idea es almacenar en caché funciones computacionalmente costosas.
También puedes hacer cosas sofisticadas como usar el decorador @ memory.cache en funciones. La documentación está aquí: https://joblib.readthedocs.io/en/latest/generated/joblib.Memory.html
fuente
Nadie ha mencionado la estantería todavía. https://docs.python.org/2/library/shelve.html
No está almacenado en Memcached, pero parece mucho más simple y podría adaptarse a sus necesidades.
fuente
Creo que la API memcached de Python es la herramienta predominante, pero no la he usado yo mismo y no estoy seguro de si es compatible con las funciones que necesita.
fuente
fuente
get
método, esta no debería ser una subclase dict, debería ser un objeto con un dict incrustado.Puedes usar mi sencilla solución al problema. Es realmente sencillo, nada sofisticado:
De hecho, carece de funcionalidad de caducidad, pero puede ampliarla fácilmente especificando una regla particular en MemCache c-tor.
El código de Hope se explica por sí mismo, pero si no, solo para mencionar, que a la caché se le está pasando una función de traducción como uno de sus parámetros de c-tor. Se usa a su vez para generar una salida en caché con respecto a la entrada.
Espero eso ayude
fuente
else
en__getitem__
:)else
en el__getitem__
? Ahí es donde puebla el dictado ...Prueba redis, es una de las soluciones más limpias y sencillas para que las aplicaciones compartan datos de forma atómica o si tienes alguna plataforma de servidor web. Es muy fácil de configurar, necesitará un cliente python redis http://pypi.python.org/pypi/redis
fuente
Mire gocept.cache en pypi, administre el tiempo de espera.
fuente
Este proyecto tiene como objetivo proporcionar "Almacenamiento en caché para humanos" (aunque parece que es bastante desconocido)
Alguna información de la página del proyecto:
Instalación
caché de instalación de pip
Uso:
fuente
Mire bda.cache http://pypi.python.org/pypi/bda.cache : usa ZCA y se prueba con zope y bfg.
fuente
keyring es la mejor biblioteca de almacenamiento en caché de Python. Puedes usar
fuente