Appengine应用清除memcache缓存的方法

最近时不时地改改本blog的代码,一个挺让我头痛的问题就是新发布的版本总是不能立马展现出来,要怪就只能怪之前我为了节约资源设置了比较长的cache过期时间。但是这总不是个事,特别是今天因为新的首页代码老出不来,bshare的网站认证就老是过不了。

于是上网Google了一下,发现在stackoverflow里大家最推崇的方法是把自己的memcache记录的key都加上应用版本号作为前缀。但是这样的话,memcache记录的更新就依赖于应用版本的更新,一来我觉得cache更新的需求并不一定是由程序版本更新引起的,二来向我这种懒人,是不可能那么勤快地去改程序版本号的。当然,最大的原因还在于,改key就得改代码,我暂时还没那么闲……

所以,上面stackoverflow链接里的那一帖中某个回复里提到的remote_api就让我感了兴趣,实际上,想要清空cache可以利用appengine提供的remote_api_shell.py连接到自己的程序,并在控制台中执行memcache记录的清空。具体步骤如下:

首先确保appengine应用能够正确地映射remote_apt所要访问的url路径,具体文档参考:http://code.google.com/appengine/articles/remote_api.html 以perlfect用的micolog程序为例,就需要在app.yaml里配置如下handler: handlers:

然后,就可以在命令行下使用如下命令访问并清空应用的cache了:

另外,这个remote shell实际上是一个python shell,所以可以用dir来查看当前对象的帮助:

本文网址:http://blog.perlfect.me/2010/11/12/flushing-cache-for-google-appengine.html

comments powered by Disqus