0

我有一个在 Google App Engine 上运行的游戏服务器。我的一些 HTTP 请求导致对不同模型的多次放置。因此,例如,我有一个用户模型和一个游戏模型,一个请求可能会同时写入两者。我正在使用带有 NDB 数据库接口的 python。

有没有办法确保两者都成功,或者甚至一个成功而一个失败,让它们都失败?交易听起来可能是正确的事情,但在阅读文档后我并不清楚,它正在谈论多个请求和冲突。

我确实看到单个 put 可以获取实体列表,但我没有看到任何提及如果一个失败则它们都失败了行为。

4

2 回答 2

2

是的,交易就是您所需要的。您需要使用 Ancestors 正确构建数据,以便将它们全部写入事务中。

如果任何 put 失败,事务中的 put 都不会被写入。在文档中说得对。

https://developers.google.com/appengine/docs/python/datastore/transactions

于 2012-08-29T23:36:52.950 回答
0

您可以使用 XG 事务来更新最多 5 个实体组(如果您不使用父子模型,最多可以更新 5 个对象)。

每个实体组(或对象)都有大约 1 个事务/秒的限制。

ndb 交易:https ://developers.google.com/appengine/docs/python/ndb/transactions xg 交易的限制:https ://developers.google.com/appengine/docs/python/datastore/overview#Cross_Group_Transactions

于 2012-08-30T01:12:18.797 回答