requests cache
v1.2: Compatibility updates, bugfixes, and minor performance improvements


Requests-Cache是一個持久的HTTP緩存,可通過Python請求庫提供一種簡單的方法來獲得更好的性能。
完整的項目文檔可以在requests-cache.readthedocs.io上找到。
requests庫。添加帶有requests.Session的置換式替換的緩存。 Sessess.sessess.sessess,或在全球安裝以將透明的緩存添加到所有requests功能中。首先,使用PIP安裝:
pip install requests-cache然後,使用requests_cache.cachedsession進行您的請求。它的行為就像是正常的請求。
為了說明,我們將調用一個端點,該端點延遲1秒,模擬一個緩慢或限制的網站。
這需要1分鐘:
import requests
session = requests . Session ()
for i in range ( 60 ):
session . get ( 'https://httpbin.org/delay/1' )這需要1秒:
import requests_cache
session = requests_cache . CachedSession ( 'demo_cache' )
for i in range ( 60 ):
session . get ( 'https://httpbin.org/delay/1' )通過緩存,響應將一次獲取一次,保存到demo_cache.sqlite ,然後隨後的請求將近返回緩存的響應。
如果您不想管理會話對象,或者只是想在您的應用程序中快速對其進行測試而不修改任何代碼,請求cache也可以在全球安裝,並且所有請求都將被透明地緩存:
import requests
import requests_cache
requests_cache . install_cache ( 'demo_cache' )
requests . get ( 'https://httpbin.org/delay/1' )默認情況下,請求 - 庫存將無限期地保持緩存的響應。在大多數情況下,您將需要使用以下兩種策略之一來平衡緩存的新鮮度和性能:
確切地定義多長時間保留響應:
使用expire_after參數為所有新響應設置固定的到期時間:
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 ))有關更多功能和設置,請參見有效期。
使用緩存控制標頭:
使用cache_control參數啟用基於Cache-Control和其他標準HTTP標題的自動到期:服務器發送的其他標準HTTP標頭:
from requests_cache import CachedSession
session = CachedSession ( 'demo_cache' , cache_control = True )有關更多詳細信息,請參見緩存標頭。
默認設置在大多數用例中都可以很好地工作,但是有很多方法可以在需要時自定義緩存行為。這是一些可用選項的快速示例:
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
)要了解有關您可以使用請求措施的更多信息,請參見: