Je recherche une bibliothèque de mise en cache Python mais je ne trouve rien pour l'instant. J'ai besoin d'une dict
interface simple où je peux définir les clés et leur expiration et les remettre en cache. Une sorte de quelque chose comme:
cache.get(myfunction, duration=300)
qui me donnera l'élément du cache s'il existe ou appellera la fonction et le stockera s'il n'existe pas ou s'il a expiré. Quelqu'un sait-il quelque chose comme ça?
item
dans votre exemple.Réponses:
Jetez un œil à Beaker:
la source
Depuis Python 3.2, vous pouvez utiliser le décorateur @lru_cache de la bibliothèque functools. C'est un dernier cache récemment utilisé, il n'y a donc pas de délai d'expiration pour les éléments qu'il contient, mais en tant que piratage rapide, il est très utile.
la source
Vous pouvez également jeter un œil au décorateur Memoize . Vous pourriez probablement le faire faire ce que vous voulez sans trop de modifications.
la source
Joblib https://joblib.readthedocs.io prend en charge les fonctions de mise en cache dans le modèle Memoize. La plupart du temps, l'idée est de mettre en cache les fonctions coûteuses en calcul.
Vous pouvez également faire des choses fantaisistes comme utiliser le décorateur @ memory.cache sur les fonctions. La documentation est ici: https://joblib.readthedocs.io/en/latest/generated/joblib.Memory.html
la source
Personne n'a encore mentionné les étagères. https://docs.python.org/2/library/shelve.html
Ce n'est pas memcached, mais semble beaucoup plus simple et pourrait répondre à vos besoins.
la source
Je pense que l'API python memcached est l'outil le plus répandu, mais je ne l'ai pas utilisé moi-même et je ne suis pas sûr qu'il prenne en charge les fonctionnalités dont vous avez besoin.
la source
la source
get
méthode, cela ne devrait pas être une sous-classe de dict, cela devrait être un objet avec un dict intégré.Vous pouvez utiliser ma solution simple au problème. C'est vraiment simple, rien d'extraordinaire:
Il manque en effet de fonctionnalité d'expiration, mais vous pouvez facilement l'étendre en spécifiant une règle particulière dans MemCache c-tor.
J'espère que le code est suffisamment explicite, mais si ce n'est pas le cas, il suffit de mentionner que le cache reçoit une fonction de traduction comme l'un de ses paramètres c-tor. Il est utilisé à son tour pour générer une sortie mise en cache concernant l'entrée.
J'espère que ça aide
la source
else
in__getitem__
:)else
dans le__getitem__
? C'est là qu'il remplit le dict ...Essayez redis, c'est l'une des solutions les plus propres et les plus simples pour les applications pour partager des données de manière atomique ou si vous avez une plate-forme de serveur Web. C'est très facile à installer, vous aurez besoin d'un client python redis http://pypi.python.org/pypi/redis
la source
Regardez gocept.cache sur pypi, gérez le délai d'expiration.
la source
Ce projet vise à fournir une "mise en cache pour les humains" (cela semble assez inconnu cependant)
Quelques informations de la page du projet:
Installation
cache d'installation de pip
Usage:
la source
Regardez bda.cache http://pypi.python.org/pypi/bda.cache - utilise ZCA et est testé avec zope et bfg.
la source
keyring est la meilleure bibliothèque de mise en cache python. Vous pouvez utiliser
la source