Memcache flush_all与Google App Engine Python上的命名空间无法正常工作

时间:2014-03-25 11:25:55

标签: google-app-engine

查看多租户+ memcache的文档,似乎每个命名空间都有memcache条目。请参阅文档here

问题在于我们打电话时:

memcache.flush_all()

所有内容都在memcache中刷新,而不仅仅是当前命名空间的条目。

在调用flush_all()之前,我们使用以下代码显式设置命名空间:

namespace_manager.set_namespace(foo)

如何仅针对当前命名空间刷新内存缓存中的条目

1 个答案:

答案 0 :(得分:1)

是的,应用程序的memcache中的flush_all deletes everything不仅仅是针对一个命名空间,这有些出乎意料。 App Engine开发团队具有允许按名称空间刷新的功能请求。请参阅Issue 5190

一种解决方法是让您维持一个持久的整数"生成计数"您作为命名空间名称的一部分包含在内。当您想要刷新命名空间时,您可以增加生成计数并使用新的命名空间,这将是全新的空白。您可以忽略旧命名空间中的项目,因为它们会逐渐被逐出。