我在appengine上运行了一个非常简单的应用程序,它每五分钟请求一个网页,并解析特定的数据块。
除了从外部请求(使用URLLIB2)得到的响应没有反映出对页面的最新更改之外,一切都可以正常工作。有时需要几分钟才能得到最新的信息,有时需要一个多小时。
是否有一个透明的缓存层出现在引擎中?或者这里还缺什么东西?我已经查看了请求页面的缓存头,并且没有发送过期、上次修改或etags头。
更新: 有时,它会为一些请求获取页面的新版本,然后随机地在以后获取过时的旧版本。
这似乎是应用程序引擎的一个问题 team is aware of . 建议的解决方法是以秒为单位设置缓存控制头的最大期限:
result = urlfetch.fetch(url, headers = {'Cache-Control' : 'max-age=240'})
希望能为你工作。