Vous pouvez simplement copier et adapter la source de LRU_CACH (voir http://hg.python.org/cpython/file/default/lib/functools.py).
Algorithme de mise en cache pour un wrapper client API Web
-
25-08-2022 - |
Question
J'ai développé un Bibliothèque client Python, qui est un emballage client pour une API Web: une fonctionnalité agréable à have serait un mécanisme de cache local: cela gagnerait du temps et de la bande passante lorsque les clients de la bibliothèque invoquent la même demande sur l'API Web à différents moments.
J'ai très peu d'exigences
- Le cache doit être développé (pas de bibliothèques externes) et exécuter Python 2.6 / 2.7 envs
- La bibliothèque doit fournir une interface uniforme, de sorte qu'il est possible d'utiliser des emballages de cache externe (par exemple: memcached), qui seront injectés à la dépendance
- Le cache doit être filial
- Le contenu à mettre en cache sera la charge utile JSON des réponses API Web.
- Les données fournies par l'API Web varient à différents rats: par exemple, la météo actuellement observée sur une ville peut varier toutes les heures, tandis que les prévisions météorologiques de 15 jours peuvent varier tous les 5 jours environ.
Quel est l'algorithme le plus simple qui puisse être utilisé?
Je pensais à un algorithme LRU (le moins récemment utilisé) mais je suppose que d'autres alternatives peuvent être évaluées - je ne suis pas du tout expert sur les caches!
La solution
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow