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
)要了解有关您可以使用请求措施的更多信息,请参见: