当前位置:  开发笔记 > 编程语言 > 正文

每次部署站点时,如何使用Google App Engine清除内存缓存?

如何解决《每次部署站点时,如何使用GoogleAppEngine清除内存缓存?》经验,为你挑选了1个好方法。

标题要求一切.我正在建立的网站上的内容根本不会很快改变,所以Memcache可能存储数据数月,除非我提出更新.有没有办法在每次部署网站时清除缓存?我正在使用Python运行时.

更新1

使用jldupont的答案我将以下代码放在我的主要请求处理脚本中......

更新2

我已经切换到Koen Bok在所选答案的注释中提到的方法,并os.environ['CURRENT_VERSION_ID']/在答案的第二次更新中将所有我的memcache键和有用的代码作为前缀.这个解决方案似乎比我之前发布的功能更优雅.



1> jldupont..:

你试过flush_all()功能吗?文档在这里.您需要一些逻辑和状态来检测新部署或使用特殊脚本来执行刷新.

更新:查看您的某个脚本的绝对路径:每次部署时都会更改.您可以使用http://shell.appspot.com/进行实验:

  import sys
  sys.path

['/ base/python_dist/lib/python25.zip','/ base/python_lib /versions/third_party/django-0.96','/ base/python_dist/lib/python2.5 /','/ base/python_dist/lib /python2.5/plat-linux2','/ base/python_dist/lib/python2.5/lib -tk','/ base/python_dist/lib/python2.5/lib-dadload','/ base/python_lib /版本/ 1','/ base/data/home/apps/shell/1.335852500710379686 /']

使用/shell/1.335852500710379686/查看该行.

因此,只需保留此部署状态变量的快照(在memcache ;-)中进行比较,以便进行刷新操作.

更新2:正如@Koen Bok所建议的那样,环境变量CURRENT_VERSION_ID也可以使用(也是脚本文件的绝对路径的一部分).

 import os
 os.environ["CURRENT_VERSION_ID"]


为什么不从环境变量中获取CURRENT_VERSION_ID?并且使用上述方法为每个请求添加一个额外的memcache查找,然后为缓存键添加前缀更快.
部署后,可以使用remote_api_shell.py运行flush_all().这是手动的,但很简单.
推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有