Pregunta

Desarrollé un Biblioteca de clientes de Python, que es un envoltorio de cliente para una API web: una característica agradable de tener que tener un mecanismo de caché local: esto ahorraría tiempo y ancho de banda cuando los clientes de la biblioteca invocen la misma solicitud en la API web en diferentes momentos.

Tengo muy pocos requisitos

  1. El caché se desarrollará (sin bibliotecas externas) y ejecute Python 2.6/2.7 Envs
  2. La biblioteca proporcionará una interfaz uniforme, de modo que sea posible usar envoltorios de mecanismo de caché externo (por ejemplo: Memcached), que se inyectarán dependencia
  3. El caché debe ser seguro de hilo
  4. El contenido que se almacenará en caché será la carga útil JSON de las respuestas de la API web.
  5. Los datos proporcionados por la API web varían en diferentes ratas de tiempo: en el ejemplo, el clima observado actualmente en una ciudad puede variar cada hora, mientras que 15 días de pronóstico del tiempo puede variar cada 5 días más o menos.

¿Cuál es el algoritmo más simple que se puede usar?

Estaba pensando en un algoritmo LRU (menos recientemente usado), pero supongo que se pueden evaluar otras alternativas, ¡no soy experto en los cachés en absoluto!

¿Fue útil?

Solución

Simplemente puede copiar y adaptar la fuente de lru_cache (ver http://hg.python.org/cpython/file/default/lib/functools.py).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top