python请求...或者别的......神秘地缓存?哈希在文件发生时不会改变

时间:2017-01-16 05:08:49

标签: python caching python-requests

我有一个非常奇怪的错误。我正在python3中编写一些代码,通过比较sha256哈希来检查URL的变化。代码的相关部分如下:

from requests import get
from hashlib import sha256

def fetch_and_hash(url):
    file = get(url, stream=True)
    f = file.raw.read()
    hash = sha256()
    hash.update(f)
    return hash.hexdigest()

def check_url(target): # passed a dict containing hash from previous examination of url
    t = deepcopy(target)
    old_hash = t["hash"]
    new_hash = fetch_and_hash(t["url"])
    if old_hash == new_hash:
        t["justchanged"] = False
        return t
    else:
        t["justchanged"] = True
        return handle_changes(t, new_hash) # records the changes

所以我在我的旧网页上测试了这个。我运行检查,记录哈希,然后更改页面。然后我重新运行了几次,上面的代码没有反映出新的哈希值(即它跟在old_hash == new_hash分支之后)。

然后我等了5分钟并再次运行它而不更改代码,除了向print()添加几个调试调用。而这一次,它奏效了。

当然,我的第一个想法是“嗯,请求必须保持缓存几秒钟。”但后来我用Google搜索并了解requests doesn't cache

同样,除了打印调用之外,我更改了无代码。你可能不相信我。你可能会想“他必须改变别的东西。”但我没有!我可以证明这一点! Here's the commit!

那是什么给出的?有谁知道为什么会这样?如果重要的是,该网页托管在一个标准的商业托管服务,IIRC使用Apache,我在一个糟糕的本地电话公司DSL连接---不知道是否有任何服务器端缓存设置,但它是没有任何类型的CDN。

所以我试图弄清楚是否有一些神秘的ISP缓存事情正在发生,或者我在某种程度上滥用请求......我能处理的是前者;后者我需要修复!

0 个答案:

没有答案