

Requests-Cache ist ein anhaltender HTTP-Cache, der eine einfache Möglichkeit bietet, mit der Python Request Library eine bessere Leistung zu erzielen.
Vollständige Projektdokumentation finden Sie unter Requests-cache.readthedocs.io.
requests , mit der Sie bereits vertraut sind. Fügen Sie das Caching mit einem Drop-In-Ersatz für requests.Session hinzu requestsInstallieren Sie zunächst mit PIP:
pip install requests-cacheVerwenden Sie dann Requests_cache.cachedSession, um Ihre Anfragen zu stellen. Es verhält sich wie eine normale Anfrage.
Zur Veranschaulichung nennen wir einen Endpunkt, der eine Verzögerung von 1 Sekunde hinzufügt und eine langsame oder ratebegrenzte Website simuliert.
Dies dauert 1 Minute:
import requests
session = requests . Session ()
for i in range ( 60 ):
session . get ( 'https://httpbin.org/delay/1' )Dies dauert 1 Sekunde:
import requests_cache
session = requests_cache . CachedSession ( 'demo_cache' )
for i in range ( 60 ):
session . get ( 'https://httpbin.org/delay/1' ) Mit dem Caching wird die Antwort einmal abgerufen, auf demo_cache.sqlite gespeichert, und nachfolgende Anfragen werden die abgespeicherte Antwort in der Nähe zurückgeben.
Wenn Sie ein Sitzungsobjekt nicht verwalten möchten oder es nur schnell in Ihrer Anwendung testen möchten, ohne Code zu ändern, kann auch weltweit installiert werden, und alle Anfragen werden transparent zwischengespeichert:
import requests
import requests_cache
requests_cache . install_cache ( 'demo_cache' )
requests . get ( 'https://httpbin.org/delay/1' )Standardmäßig hält Requests-Cache zwischengespeicherte Antworten auf unbestimmte Zeit. In den meisten Fällen möchten Sie eine der beiden folgenden Strategien verwenden, um die Frische und Leistung von Cache auszugleichen:
Definieren Sie genau, wie lange die Antworten beibehalten werden:
Verwenden Sie den Parameter expire_after , um eine feste Ablaufzeit für alle neuen Antworten festzulegen:
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 ))Weitere Funktionen und Einstellungen finden Sie in Ablauf.
Verwenden Sie Cache-Kontroll-Header:
Verwenden Sie den Parameter cache_control , um die automatische Ablauf basierend auf Cache-Control und anderen Standard-HTTP-Headern, die vom Server gesendet wurden, basierend zu aktivieren:
from requests_cache import CachedSession
session = CachedSession ( 'demo_cache' , cache_control = True )Weitere Informationen finden Sie unter den Cache -Headern.
Die Standardeinstellungen funktionieren für die meisten Anwendungsfälle gut, aber es gibt viele Möglichkeiten, bei Bedarf das Caching -Verhalten anzupassen. Hier finden Sie ein kurzes Beispiel für einige der verfügbaren Optionen:
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
)Um mehr über das zu erfahren, was Sie mit Requests-Cache tun können, siehe: