我正在尝试使用appengine数据存储区来共享appengine模块之间的密钥。 我正在一个模块中编写密钥,我可以从该模块中读取它。
尝试从第二个模块读取它不起作用,我没有得到这样的实体响应。
在模块之间共享密钥的最佳方法是什么?我可以使用数据存储吗?从我在文档数据存储中读到的内容在服务之间共享。但它似乎对我不起作用。
答案 0 :(得分:1)
您可能会遇到最终的一致性问题。数据存储是分布式的,因此一个服务可能会遇到一致的数据版本而另一个服务(模块)会遇到另一个过时的版本。数据存储区绝对是一种在模块之间共享数据的方式,因此它可能是一个一致性问题,除非您重新构建数据或查询要非常一致,否则无法保证能够立即读取数据,或者它可能是一些其他问题,比如你在另一个模块中使用了错误的键,或者以某种方式命中了不同的命名空间。
以下是有关数据存储一致性的一些资源: https://cloud.google.com/datastore/docs/concepts/structuring_for_strong_consistency https://cloud.google.com/datastore/docs/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore/ https://cloud.google.com/datastore/docs/best-practices
从上一个链接:
如果您的查询需要强一致性,请使用祖先 查询。 (要使用祖先查询,首先需要构建数据 为了强一致性。)祖先查询返回强一致性 结果。请注意,非祖先的key-only查询后跟a lookup()不会返回强结果,因为非祖先 仅键查询可以从不一致的索引获得结果 在查询时。