The title asks it all. The content on the site I'm building wont change very quickly at all and so Memcache could potentially store data for months except for when I put up an update. Is there a way to make it clear the cache every time I deploy the site? I'm using the Python runtime.
Using jldupont's answer I put the following code in my main request handling script...
I've switched to the method mentioned by Koen Bok in the selected answer's comments and prefixed all my memcache keys with os.environ['CURRENT_VERSION_ID']/
with the helpful code in the answer's 2nd update. This solution seems to be much more elegant than the function I posted before.
Have you tried flush_all()
function? Docs here. You'll need a bit of logic & state to detect a new deployment or have a special script to perform the flushing.
Updated: look at the absolute path of one of your script: this changes on every deployment. You can use http://shell.appspot.com/ to experiment:
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/']
Look at the line with /shell/1.335852500710379686/.
So, just keep a snapshot (in memcache ;-) of this deployment state variable and compare in order to effect a flushing action.
Updated 2: as suggested by @Koen Bok, the environment variable CURRENT_VERSION_ID can be used also (part of the absolute path to script files also).
import os
os.environ["CURRENT_VERSION_ID"]