2009-03-31 19 views
5

Sto lavorando su una classe client che deve caricare i dati da un database di rete. È stato suggerito che l'aggiunta di un servizio di memorizzazione nella cache standard al client potrebbe migliorare le sue prestazioni.Esiste una classe di caching Python standard di terze parti?

Mi piacerebbe molto non dover costruire la mia classe di cache: è noto che questi forniscono punti comuni di errore. Sarebbe molto meglio usare una classe che qualcun altro ha sviluppato piuttosto che spendere una quantità enorme del mio tempo per il debug di un sistema di caching fatto in casa.

sviluppatori Java hanno questo: http://ehcache.sourceforge.net/

Si tratta di una classe di caching ad alte prestazioni per uso generico in grado di supportare tutti i tipi di stoccaggio. Ha opzioni per la scadenza basata sul tempo e altri metodi per la raccolta dei rifiuti. Sembra davvero buono Purtroppo non riesco a trovare nulla di buono per Python.

Quindi, qualcuno può suggerire una classe cache che è pronta per me da usare. La mia lista dei desideri è:

  • Possibilità di limitare il numero di oggetti nella cache.
  • Possibilità di limitare l'età massima degli oggetti nella cache.
  • LRU oggetto expirey
  • Possibilità di selezionare più forme di stoccaggio (ad esempio memoria, disco)
  • Bene debug, ben mantenuto, in uso da almeno una conosciuta applicazione.
  • Buona prestazione.

Quindi, qualche suggerimento?

AGGIORNAMENTO: Sto cercando la memorizzazione nella cache LOCALE degli oggetti. Il server a cui mi collego è già pesantemente memorizzato nella cache. Memcached non è appropriato perché richiede un ulteriore traffico di rete tra il client Windows e il server.

risposta

4

Si consiglia di utilizzare memcached e di utilizzare cmemcache per accedervi. Non è possibile limitare necessariamente il numero di oggetti nella cache, ma è possibile impostare un tempo di scadenza e limitare la quantità di memoria che utilizza. E memcached è usato da molti grandi nomi. In effetti, lo definirei lo standard del settore.

UPDATE:

sto cercando caching locale di oggetti.

È possibile eseguire memcached localmente e accedervi tramite localhost. L'ho fatto un paio di volte.

Oltre a ciò, l'unica soluzione che posso pensare è django's caching system. Offre diversi backend e alcune altre opzioni di configurazione. Ma questo potrebbe essere un po 'pesante se non stai usando Django.

UPDATE 2: suppongo come ultima risorsa, è anche possibile utilizzare jython e accedere al sistema Java cache. Questo può essere un po 'difficile da fare se hai già avuto clienti che usano CPython.

UPDATE 3: E 'probabilmente un po' tardi per essere utile a voi, ma un precedente datore di lavoro di mine usato ZODB per questo genere di cose. È un vero database, ma le sue prestazioni di lettura sono abbastanza veloci da renderlo utile per la memorizzazione nella cache.

+0

Non è appropriato in questo caso ... Sto cercando di velocizzare un'applicazione di rete aggiungendo una cache LOCAL. Una cache di rete sarà lenta per gli utenti finali dato che potrebbero essere ovunque nel mondo. –

+0

Purtroppo, a questo stadio è complicato usare Jython. –

Problemi correlati