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。每个版本都链接到下一个文件,当它出现时你只需要加载它一次。
我有一个 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。每个版本都链接到下一个文件,当它出现时你只需要加载它一次。