我在Google App Engine上运行游戏服务器。我的一些HTTP请求会导致多个放入不同的模型。所以我有一个用户模型和一个游戏模型,例如,一个请求可以写入两者。我正在使用python和NDB数据库接口。
有没有办法确保两者成功,或者即使一个人成功,一个人都失败了?交易听起来像是正确的事情,但我在阅读文档之后并不清楚,它正在讨论多个请求和冲突。
我确实看到单个put可以获取实体列表,但我没有看到任何提及是否失败然后它们都失败了。
答案 0 :(得分:2)
是的,交易是您所需要的。您需要使用Ancestor正确构建数据,以便在事务中将它们全部写入。
如果任何看跌失败,则不会写入交易中的任何看跌期权。在文档中说得很对。
https://developers.google.com/appengine/docs/python/datastore/transactions
答案 1 :(得分: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