pila de perros
Dogpile consta de dos subsistemas, uno superpuesto al otro.
dogpile
proporciona el concepto de "bloqueo de pila de perros", una estructura de control que permite seleccionar un único subproceso de ejecución como "creador" de algún recurso, al tiempo que permite que otros subprocesos de ejecución se refieran a la versión anterior de este recurso como el la creación procede; si no hay una versión anterior, esos subprocesos se bloquean hasta que el objeto esté disponible.
dogpile.cache
es una API de almacenamiento en caché que proporciona una interfaz genérica para almacenar en caché backends de cualquier variedad y, además, proporciona enlaces API que integran estos backends de caché con el mecanismo de bloqueo de dogpile
.
En general, dogpile.cache pretende ser un reemplazo del sistema de almacenamiento en caché Beaker, cuyas partes internas están escritas por el mismo autor. Todas las ideas de Beaker que "funcionan" se vuelven a implementar en dogpile.cache de una manera más eficiente y concisa, y todo el resto (las partes internas de Beaker se escribieron por primera vez en 2005) se relegaron a la basura.
Documentación
Consulte la documentación completa de dogpile.cache en documentación de dogpile.cache. Las secciones siguientes proporcionan una breve sinopsis de los paquetes dogpile
.
Características
- Una API concisa que fomenta la configuración inicial de "regiones" predefinidas, cada una de las cuales define un conjunto de características de almacenamiento en caché que incluyen el backend de almacenamiento, las opciones de configuración y el tiempo de vencimiento predeterminado.
- Se proporciona una API estándar para obtener/configurar/eliminar, así como una API decoradora de funciones.
- La mecánica de generación de claves es totalmente personalizable. La API del decorador de funciones cuenta con un "generador de claves" conectable para personalizar cómo se crean las claves de caché para que correspondan con las llamadas a funciones, y una característica opcional de "destructor de claves" permite la manipulación conectable de claves (como codificación, hash SHA-1) según se desee. para cada región.
- El bloqueo de pila de perros, desarrollado por primera vez como el motor central detrás del sistema de almacenamiento en caché Beaker, aquí se simplifica, mejora y prueba mejor. Se han solucionado algunos problemas clave de rendimiento que eran intrínsecos a la arquitectura de Beaker, en particular que los valores frecuentemente se "obtenían dos veces" del caché.
- Los backends implementan su propia versión de un bloqueo "distribuido", donde la "distribución" coincide con el sistema de almacenamiento del backend. Por ejemplo, los servidores de Memcached permiten a todos los clientes coordinar la creación de valores utilizando el propio Memcached. El backend del archivo dbm utiliza un archivo de bloqueo junto con el archivo dbm. Los nuevos backends, como los basados en Redis, pueden proporcionar su propio mecanismo de bloqueo apropiado para el motor de almacenamiento.
- Escribir nuevos backends o piratear los backends existentes está pensado para ser una rutina; todo lo que se necesita son métodos básicos de obtención/configuración/eliminación. Un bloqueo distribuido adaptado al backend es una adición opcional; de lo contrario, dogpile utiliza un mutex de hilo normal. Los nuevos backends se pueden registrar directamente en dogpile.cache o estar disponibles a través de los puntos de entrada de setuptools.
- Los backends incluidos cuentan con tres backends memcached (python-memcached, pylibmc, bmemcached), un backend Redis, un backend basado en anydbm de Python y un backend de diccionario simple.
- Espacio para complementos de terceros, incluido uno que proporciona el motor dogpile.cache para las plantillas de Mako.
El proyecto SQLAlchemy
Dogpile es parte del proyecto SQLAlchemy y cumple con los mismos estándares y convenciones que el proyecto principal.
Desarrollo / Informe de errores / Solicitudes de extracción
Consulte la Guía de la comunidad SQLAlchemy para obtener pautas sobre cómo codificar y participar en este proyecto.
Código de conducta
Por encima de todo, SQLAlchemy pone gran énfasis en la comunicación educada, reflexiva y constructiva entre usuarios y desarrolladores. Consulte nuestro Código de conducta actual en Código de conducta.
Licencia
Dogpile se distribuye bajo la licencia MIT.