如何刷新Google App Engine数据存储区中保留的配置条目?

时间:2016-12-28 21:56:46

标签: python google-app-engine google-cloud-datastore app-engine-ndb

我想将一些应用程序配置条目保留为数据存储区中的实体。现在,当我从数据存储区查看器(开发环境)或Google Cloud Platform数据存储区用户界面(生产环境)更新这些条目时,应用程序看不到新值。这是因为 ndb 缓存了实体。

我的(非常开放)问题是:您在数据存储区中保留配置条目,从Google的用户界面更新它们以及为应用程序提供新值的技术是什么?

我想到了以下几点:

  1. 在定义配置条目的_memcache_timeout子类上设置合理的ndb.Model - 但在这种情况下,memcache的使用是次优的(执行不必要的数据存储读取)。

  2. 将缓存设置保持最大,但在应用程序的管理区域中执行flush操作以单独刷新实体。这很棘手,因为您无法确定实体的实际缓存键。但通常情况应为_memcache_prefix + key.urlsafe()ndb.context module中定义了_memcache_prefix

  3. 从应用程序的管理区域更新所有配置条目,不要使用Google的数据存储区用户界面 - 这需要额外的努力。

1 个答案:

答案 0 :(得分:2)

选项1 - 大部分工作

使用NDB客户端库在App Engine中实现您自己的管理模块。如果您通过自己的应用程序对实体进行更改,那么它自然会为您编写正确的内存缓存密钥。

选项2 - 更新延迟的交易成本

正如您已经建议的那样,减少模型的最大缓存期限。例如,在大多数情况下允许更改生效前的1小时不是不合理的。

选项3 - 工作量最少,但规模不大

通过云控制台刷新整个缓存以获取内存缓存。

警告:如果你的规模很大,这是一个坏主意,因为它可能会导致请求大幅增加。例如,如果您在90%的缓存命中率后以100万次/秒的速度运行数据存储,那么在刷新后,您可能会立即达到1000万次读取/秒。