Python: requests 模块没有缓存,为什么会出现这个错误呢?

Python: requests module do not cache, why this error then?

我有一个 link 格式为 github 的原始 txt 文件 https://raw.githubusercontent.com/XXX/YYY/master/txtfile where I want to periodically put a new version so a python script will know that it must update, the python script (py 3.5) uses an infinite while loop and the module requests:

while True:

    try:
        r = requests.get('https://raw.githubusercontent.com/XXX/YYY/master/txtfile', timeout=10)
        required_version = r.text
    except:
        required_version = 0

    log_in_txt_file(required_version)

    sleep(10)

此脚本在Windows下运行,但是,我注意到尽管服务器上的版本已更新,但日志仍然显示请求获取的是以前的版本!如果我尝试从浏览器 (Chrome) 获取版本,也会发生同样的情况,但是在 F5 之后新版本出现(在浏览器和日志中),但是,脚本有时仍然记录旧的,有时新版本!我尝试使用 URL 变量:

https://raw.githubusercontent.com/XXX/YYY/master/txtfile?_=time.time

但问题仍然存在,我使用的是 Amazon 工作区,我很确定这是一个 OS 问题,我的问题是,如何使用 python 解决这个问题?有什么想法吗?

这不是客户端缓存问题。实际上,Github 服务器 正在缓存版本,为您提供内容,直到它们及时更新。

Github 从一系列网络服务器提供您的数据,这些服务器分布在不同的地理位置以减少加载时间。这些服务器不会同时更新;在更改传播到所有服务器之前,您会看到 URL 上返回的新旧内容,具体取决于为特定请求提供内容的机器。

您不能真正使用 GitHub 来检测新版本何时发布,这并不可靠。相反,生成一个唯一的文件名(也许生成一个 GUID),在将来 将包含新版本信息。给出当前版本的文件名,然后尝试轮询。发布新版本包括为之后的版本生成文件名,并将信息放入当前 'new version' URL。每个版本都链接到下一个文件,当它出现时你只需要加载它一次