【问题标题】:Best practices in App Engine regarding stale dataApp Engine 中关于过时数据的最佳做法
【发布时间】:2018-03-30 01:28:30
【问题描述】:

我有一个应用程序,它首先从数据存储区读取一个相当小的实体列表(不超过 1000 个,通常少于 100 个)。我有一项服务可以定期更新这些实体,而另一个实体只是提供上次更新时间。

如果有的话,我该怎么做才能让应用程序的后续调用使用最新数据?唯一有效(可靠)的是删除所有当前正在运行的实例。如果有某种方法可以通过更新服务停止当前实例,即使这样也没有问题。

【问题讨论】:

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


    【解决方案1】:

    您需要为strong consistency 构建数据。 Google Cloud Datastore 中的普通查询最终是一致的,因此您不会总是获得最新数据,除非您要么perform an ancestor query or a global query

    如需更深入地研究 Google Cloud Datastore 上的最终一致性与强一致性,请参阅this article

    【讨论】:

    • 我会尝试使用虚拟祖先组进行设置,但我强烈怀疑这不是问题所在。 LastUpdate 是一个有 1 个成员,id=1 的 Kind,我总是通过它的键来请求它,这应该是高度一致的,但我等待多长时间并不重要。在删除当前实例之前,它永远不会更新。但我会尝试另一种方法并报告回来。但我不明白为什么LastUpdate = ndb.Key(LastUpdate,1).get(use_cache=False).lu 不起作用。
    • 谢谢。这个答案让我走上了正确的轨道。我的问题不是一致性、强或最终。问题是我没有正确地重新读取更改的数据。但是现在我已经将所有这些都实现为强一致......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多