Python 请求-缓存仍在查询远程 URL

Cra*_*cky 5 python caching python-requests

我正在使用Requests-Cache库来缓存Requests的结果。看来安装缓存就好了;请求 URL 会创建一个.sqlite缓存文件,后续请求会检索该数据,即使远程页面发生更改也是如此。

今天我的互联网连接很差,我注意到我的脚本(它发出许多(据说是缓存的)请求)运行缓慢。作为快速健全性检查,我尝试使用测试脚本来创建缓存,然后在断开计算机与 WiFi 的连接后再次运行它。但是,这会出错:

requests.exceptions.ConnectionError: HTTPConnectionPool(host='magicplugin.normalitycomics.com', port=80): Max retries exceeded with url: /update/updatelist.txt (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x110390d68>: Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known'))
Run Code Online (Sandbox Code Playgroud)

如果 Requests-Cache 将请求重定向为使用本地缓存数据,为什么请求甚至尝试连接到远程站点?有办法避免这种情况吗?我不需要减慢我的脚本速度(特别是当我的连接很差时)并从服务器发出不必要的请求。

Cra*_*cky 5

我想到了!

我的实际代码发出的请求有时会成功获取页面,有时会收到 404。

我的简单测试脚本复制问题的唯一原因是我在请求的页面中犯了一个拼写错误。Requests 收到了 404。即使 Requests-Cache 创建了缓存文件,它也没有将此结果存储在其中。

事实证明,默认情况下,Requests-Cache仅缓存 200 代码响应,但这是可配置的

requests_cache.install_cache('example_cache', allowable_codes=(200, 404))
Run Code Online (Sandbox Code Playgroud)

现在效果很好!