App Engine Python3 db / ndb 和最终一致性

问题描述 投票:0回答:1

刚刚从运行时间非常长的 Python2 App Engine 应用程序迁移到 Python3。在我的requirements.txt 中使用了“appengine-python-standard”行。这让我可以继续使用:

从 google.appengine.ext 导入数据库

从 google.appengine.ext 导入 ndb

在我们的程序中(以及任务队列和内存缓存)。非常高兴谷歌在最初的迁移过程被迫到不同的服务后提供这些。

我的问题的长篇介绍。支持 Python2 的原始数据存储具有最终一致性。鉴于此,我们使用分片来帮助避免写入最繁忙的实体时发生冲突。 (风险不是很大,但我们很小心。)

使用 Datastore GC 访问工具可以清楚地看出,新数据存储上的设置与 Python2 原始数据存储上的设置不同,因为在看到 AppEngine 实体之前必须首先访问“默认”存储桶。 GC 文档称“数据存储模式下的 Firestore 是一个 NoSQL 文档数据库,专为自动扩展、高性能和易于应用程序开发而构建。”

由于 Firestore 不使用最终一致性,我们想重写我们的分片流程。我不确定运行 Python3 时“appengine-python-standard”要求提供的 db 和 ndb 包装器是否提供真正的 Firestore 功能,或者我们是否仍然需要允许最终一致性。

顺便说一句:我们刚刚针对新的 Python3/Flask 应用程序运行了一个项目。对响应时间非常满意。担心使用 appengine-python-standard 会受到惩罚。它可能在那里,但看不到。

TIA。

google-app-engine
1个回答
0
投票

不完全理解你的问题,但请注意

  1. 由于 Firestore 不使用最终一致性

    文档说您可以在使用数据存储时显式请求最终一致性。该文档有这个片段

    数据存储查询变得强一致

    除非您明确请求最终一致性

  2. ndb 的捆绑 API 具有最终一致性(请参阅

    docs)。如果在 Python 3 的版本中对此进行了更改,我希望对此进行记录,但我还没有看到(也可能是我错过了)

© www.soinside.com 2019 - 2024. All rights reserved.