Domanda

Ho sviluppato a Biblioteca client Python, che è un wrapper client per un'API Web: una funzione piacevole da avere sarebbe un meccanismo di cache locale: ciò risparmierebbe tempo e larghezza di banda quando i client della libreria invocano la stessa richiesta sull'API Web in momenti diversi.

Ho pochissimi requisiti

  1. La cache deve essere sviluppata (nessuna libreria esterna) ed eseguire Python 2.6/2.7 Envs
  2. La libreria deve fornire un'interfaccia uniforme, in modo che sia possibile utilizzare i meccanismi di cache esterni (ad esempio: memcached) wrapper, che saranno iniettati
  3. La cache dovrebbe essere thread-safe
  4. Il contenuto da memorizzazione nella cache sarà il payload JSON delle risposte dell'API Web.
  5. I dati forniti dall'API Web variano in tempi diversi: ad esempio, il tempo attualmente osservato su una città può variare ogni ora, mentre le previsioni meteorologiche di 15 giorni possono variare ogni 5 giorni circa.

Qual è l'algoritmo più semplice che può essere usato?

Stavo pensando a un algoritmo LRU (meno usato di recente) ma immagino che altre alternative possano essere valutate - non sono affatto esperto di cache!

È stato utile?

Soluzione

Potresti semplicemente copiare e adattare la fonte da lru_cache (vedi http://hg.python.org/cpython/file/default/lib/funcuncys.py).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top