基本用法与参数含义

requests_cache.install_cache(
    cache_name='cache',         # 缓存文件的名称
    backend='filesystem',       # 使用文件系统作为缓存后端
    expire_after=None,          # 不设置缓存过期时间,缓存不会过期
    allowable_codes=(200,),     # 仅缓存返回状态为 200 的响应
    allowable_methods=('GET',), # 仅缓存 GET 请求
    filter_fn=filter_fn,        # 使用自定义过滤函数
    session_factory=requests_cache.core.CachedSession,# 使用默认的 CachedSession
)

为了理解函数功能,介绍下各个参数的含义:

  • cache_name:缓存文件名称
  • backend:设置缓存的存储机制,默认使用sqlite进行存储

    • 支持多种不同的存储机制:filesystem、memory、sqlite、mongoDB、redis、gridfs、mongodb、dynamodb。在设置存储机制为第三方软件数据库时需要提前安装对应的模块。
    • memory(不推荐!):以字典的形式将缓存存储在内存当中,程序运行完以后缓存将被销毁。需要注意的是,这样设置会导致requests_cache 将缓存记录存储在内存中。内存中的数据在程序终止或因错误导致程序退出时会被释放。在这种情况下,缓存记录在 Python 程序重启后会完全消失。这意味着缓存的有效期在程序退出后不再生效,因为缓存数据本身已经丢失;而且程序重启后,即使请求的 URL 与之前完全相同,也会重新发起实际的网络请求,因为之前的缓存记录已经不复存在。
    • filesystem(推荐):对比memory,filesystem 会将缓存数据存储在本地文件系统中,这意味着缓存记录会持久化存储,程序重启后缓存依然存在,直到缓存过期或被手动清除。同时可以存储大量的缓存数据,而不会占用过多内存,适合大规模的缓存需求
  • expire_after:设置缓存的有效时间(默认单位秒),设置为None则缓存永久有效
  • allowable_codes:设置状态码
  • allowable_methods:设置请求方式,默认get,表示只有get请求才可以生成缓存
  • session_factory:设置缓存执行的对象,需要实现CachedSession类
  • backend_options:如果缓存的存储方式为sqlit、mongo、redis数据库,该参数表示设置数据库的连接方式

代码基本实践:

一般情况下,不需要单独设置任何参数,使用默认参数即可

import requests
import requests_cache

# 安装缓存,设置缓存名称、后端和过期时间
requests_cache.install_cache(
    cache_name='my_cache',         # 缓存文件名(将存储为 my_cache.sqlite)
    backend='filesystem',          # 使用文件系统作为缓存后端
    expire_after=3600,             # 缓存有效期为 1 小时(3600 秒)
)

# 发送 GET 请求,第一个请求会从网络获取数据,并缓存响应
response1 = requests.get('https://api.github.com')
print("First request, from cache:", response1.from_cache)  # 输出 False,因为第一次请求会从网络获取

# 发送另一个相同的 GET 请求,这次会从缓存中读取响应
response2 = requests.get('https://api.github.com')
print("Second request, from cache:", response2.from_cache)  # 输出 True,因为第二次请求会从缓存中读取

曼巴
1 声望0 粉丝