标题说明了一切。我正在构建的网站上的内容根本不会很快改变,因此 Memcache 可能会存储数月的数据,除非我发布更新。有没有办法在我每次部署站点时清除缓存?我正在使用 Python 运行时。
更新 1
使用 jldupont的answer我将以下代码放在我的主请求处理脚本中...
更新 2
我已切换到Koen Bok 中提到的方法。在所选答案的评论中,并在我所有的内存缓存键前面加上 os.environ['CURRENT_VERSION_ID']/
和 answer 中的有用代码的第二次更新。这个解决方案似乎比我之前发布的功能要优雅得多。
最佳答案
你试过flush_all()
函数吗? Docs here .您需要一些逻辑和状态来检测新部署或使用特殊脚本来执行刷新。
更新:查看其中一个脚本的绝对路径:每次部署都会更改。您可以使用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/versions/1', '/base/data/home/apps/shell/1.335852500710379686/']
查看与/shell/1.335852500710379686/的行。
因此,只需保留此部署状态变量的快照(在内存缓存中;-)并进行比较以执行刷新操作。
更新 2:正如@Koen Bok 所建议的,环境变量 CURRENT_VERSION_ID 也可以使用(也是脚本文件的绝对路径的一部分)。
import os
os.environ["CURRENT_VERSION_ID"]
关于python - 每次部署站点时,如何让 Google App Engine 清除内存缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1983556/