

Solds-Cache es un caché HTTP persistente que proporciona una manera fácil de obtener un mejor rendimiento con la Biblioteca de solicitudes de Python.
La documentación completa del proyecto se puede encontrar en requests-cache.readthedocs.io.
requests con la que ya está familiarizado. Agregue el almacenamiento en caché con un reemplazo entre requests requests.Session .Primero, instale con PIP:
pip install requests-cacheLuego, use las solicitudes_cache.cachedsession para hacer sus solicitudes. Se comporta como una solicitud normal. Session, pero con el comportamiento de almacenamiento en caché.
Para ilustrar, llamaremos a un punto final que agrega un retraso de 1 segundo, simulando un sitio web lento o limitado.
Esto lleva 1 minuto:
import requests
session = requests . Session ()
for i in range ( 60 ):
session . get ( 'https://httpbin.org/delay/1' )Esto toma 1 segundo:
import requests_cache
session = requests_cache . CachedSession ( 'demo_cache' )
for i in range ( 60 ):
session . get ( 'https://httpbin.org/delay/1' ) Con el almacenamiento en caché, la respuesta se obtendrá una vez, guardada en demo_cache.sqlite , y las solicitudes posteriores devolverán la respuesta en caché de manera cercana.
Si no desea administrar un objeto de sesión, o simplemente desea probarlo rápidamente en su aplicación sin modificar ningún código, las solicitudes de solicitudes también se pueden instalar a nivel mundial, y todas las solicitudes se almacenarán de manera transparente:
import requests
import requests_cache
requests_cache . install_cache ( 'demo_cache' )
requests . get ( 'https://httpbin.org/delay/1' )Por defecto, las solicitudes de solicitudes mantendrán las respuestas en caché indefinidamente. En la mayoría de los casos, querrá utilizar una de las dos estrategias siguientes para equilibrar la frescura y el rendimiento de los caché:
Defina exactamente cuánto tiempo para mantener las respuestas:
Use el parámetro expire_after para establecer un tiempo de vencimiento fijo para todas las respuestas nuevas:
from requests_cache import CachedSession
from datetime import timedelta
# Keep responses for 360 seconds
session = CachedSession ( 'demo_cache' , expire_after = 360 )
# Or use timedelta objects to specify other units of time
session = CachedSession ( 'demo_cache' , expire_after = timedelta ( hours = 1 ))Consulte el vencimiento para obtener más funciones y configuraciones.
Use encabezados de control de caché:
Use el parámetro cache_control para habilitar la cadena automática basada en Cache-Control y otros encabezados HTTP estándar enviados por el servidor:
from requests_cache import CachedSession
session = CachedSession ( 'demo_cache' , cache_control = True )Vea los encabezados de caché para obtener más detalles.
La configuración predeterminada funciona bien para la mayoría de los casos de uso, pero hay muchas formas de personalizar el comportamiento de almacenamiento en caché cuando sea necesario. Aquí hay un ejemplo rápido de algunas de las opciones disponibles:
from datetime import timedelta
from requests_cache import CachedSession
session = CachedSession (
'demo_cache' ,
use_cache_dir = True , # Save files in the default user cache dir
cache_control = True , # Use Cache-Control response headers for expiration, if available
expire_after = timedelta ( days = 1 ), # Otherwise expire responses after one day
allowable_codes = [ 200 , 400 ], # Cache 400 responses as a solemn reminder of your failures
allowable_methods = [ 'GET' , 'POST' ], # Cache whatever HTTP methods you want
ignored_parameters = [ 'api_key' ], # Don't match this request param, and redact if from the cache
match_headers = [ 'Accept-Language' ], # Cache a different response per language
stale_if_error = True , # In case of request errors, use stale cache data if possible
)Para obtener más información sobre lo que puede hacer con las solicitudes de Cache, consulte: