如何使用Python请求清除缓存?

时间:2013-11-25 16:37:47

标签: python python-requests

Python的requests包是否默认缓存数据?

例如,

import requests
resp = requests.get('https://some website')

是否会缓存响应?如果是,我该如何清除它?

4 个答案:

答案 0 :(得分:10)

Python请求没有任何缓存功能。

但是,如果你需要它们,你可以查看requests-cache,虽然我从未使用它。

截至2018年,其最后一次发布是在2016年,因此似乎没有得到维护。

答案 1 :(得分:8)

添加'Cache-Control: no-cache'标题:

self.request = requests.get('http://google.com',
                            headers={'Cache-Control': 'no-cache'})

答案 2 :(得分:5)

默认情况下,请求不执行缓存。您可以使用CacheControl等内容轻松插入。

答案 3 :(得分:1)

最新答案,但是您不清除缓存python requests,因为它不缓存请求,而应使用标头Cache-ControlPragma,即:

import requests
headers = {
    ...
    "Cache-Control": "no-cache",
    "Pragma": "no-cache"
}
x = requests.get("site.tld", headers=headers)
...

HTTP/Headers

  •   

    Cache-Control
      Cache-Control general-header字段用于为请求和响应中的缓存机制指定指令。缓存指令是单向的,这意味着请求中的给定指令并不意味着响应中将给出相同的指令。

  •   

    Pragma
      特定于实现的标头,可能在任何地方产生各种影响   沿着请求-响应链。用于向后兼容   尚未使用Cache-Control标头的HTTP / 1.0缓存   礼物。


指令

  •   

    no-cache
      强制缓存将请求提交到原始服务器以用于   在发布缓存的副本之前进行验证。


Pragma上的注释:

  

未为HTTP响应指定杂项,因此不是   可靠地替代了常规的HTTP / 1.1 Cache-Control标头,   尽管它的行为与Cache-Control:no-cache相同,但如果   请求中省略了Cache-Control标头字段。仅使用语用   与HTTP / 1.0客户端向后兼容。