python - 使用 GAE + ndb 进行配对

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

我有一个游戏,用户联系服务器以找到与他们级别想玩游戏的用户。这是游戏请求的基本架构。

enter image description here

我正在使用 ndb 为 Google DataStore 中的每个用户级别存储一个等待队列。

我通过键访问这些队列以确保强一致性(根据 this article )。实体使用重复的(列表)LocalStructuredProperty 存储在队列中.

问题:

  1. 实体从等待队列中删除,因为它与请求匹配。事务已提交但尚未应用。同一实体与另一个请求匹配并被删除。这会引发错误吗?
  2. 这些高度一致的访问限制为~1 次写入/秒。有没有更好的架构可以消除这种限制?

对于后一个问题,我考虑过的一件事是维护多个队列(其数量随着需求而增长和收缩)。

最佳答案

不确定您的第一个问题,但您可以在交易中使用 sleep 语句来模拟它。

对于第二个问题,您可以使用另一种架构。如果等待队列持续时间相对较短(几分钟而不是几小时),您可能需要使用内存缓存。这将比写入磁盘快得多,并且您可以避免处理一致性问题。

关于python - 使用 GAE + ndb 进行配对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39899451/

相关文章:

python - pyodbc:如何重试从 transient 错误中恢复?

google-app-engine - 如何为 App Engine 推送部署连接 GitHub 组织存储库?

java - Google App Engine Channel API 在 token 过期后重新连接

google-app-engine - 为什么调用此方法会导致我的应用超出免费配额?

python - 如何保存包含某些 block 的整个网页

python - 使用python解析url时出错

java - Google App Engine Objectify 数据存储 - 最近私有(private)用户数据的实体和查询?

java - 为什么我的 GAE 数据存储查询返回的游标为 null?

google-app-engine - Go App Engine 写入 Google 数据存储挂起

python - Unicode编码错误: 'cp949' codec can't encode character