小编典典

每次部署网站时,如何让Google App Engine清除内存缓存?

python

标题问了一切。我正在构建的网站上的内容根本不会很快改变,因此Memcache可能会存储几个月的数据,但当我进行更新时除外。有没有一种方法可以在每次部署站点时清除缓存?我正在使用Python运行时。

更新2

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


阅读 239

收藏
2021-01-20

共1个答案

小编典典

您尝试过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-
dynload’、’/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"]
2021-01-20