Google app engine Appengine ndb-事务可以报告失败但成功
在发现以下情况后,我对使用Appengine有些担忧: 注意:如果您的应用程序在提交 事务,它并不总是意味着事务失败。你 可以接收超时、TransactionFailedError或InternalError 已提交事务的情况下的例外情况,以及 最终将成功应用。只要有可能,尽你所能 云数据存储事务是幂等的,因此如果重复 交易,最终结果将是相同的 Ndb交易: 这篇文章之前已经提到过这个问题,但没有回答: 我已经搜索并阅读了这个问题,但找不到更具体的内容。 我有一个游戏,我将执行以下操作:Google app engine Appengine ndb-事务可以报告失败但成功,google-app-engine,transactions,Google App Engine,Transactions,在发现以下情况后,我对使用Appengine有些担忧: 注意:如果您的应用程序在提交 事务,它并不总是意味着事务失败。你 可以接收超时、TransactionFailedError或InternalError 已提交事务的情况下的例外情况,以及 最终将成功应用。只要有可能,尽你所能 云数据存储事务是幂等的,因此如果重复 交易,最终结果将是相同的 Ndb交易: 这篇文章之前已经提到过这个问题,但没有回答: 我已经搜索并阅读了这个问题,但找不到更具体的内容。 我有一个游戏,我将执行以下操作:
- 报名
- 登录
- 更新进度
- 更新密码/电子邮件
- 删除帐户
- 如果报告了一个失败,但后来它实际上成功了,这意味着什么? 假设进度在之前已成功保存,并且为12级。现在用户发布他/她已提升到15级。它报告失败,但随后成功。假设用户的兄弟在另一台设备上使用相同的配置文件,该设备仅处于12级,尚未看到其他更新,他完成13级并保存。现在会发生什么? 事务包括读取保存的级别,如果级别更大,则写入新级别,否则保留旧级别。 但是事务号2是否会查看旧值,决定它应该写入13,然后在事务1之后排队,以便事务1最终完成并写入15,但事务2会因为查看旧值而写入13? 或者事务1会在实际真值写入和写入15之前读取值,然后事务2也会读取现在为15的真值,然后不写入13? 交易已提交意味着什么
- 对于注册,这可能意味着注册被报告为失败,但被写入数据库,然后用户尝试再次注册,但服务器表示电子邮件已经存在。这会惹恼人们
- 更新电子邮件和密码-用户更新pw或电子邮件,并报告失败。所以他们用旧密码登录只是为了看看它不起作用,因为新密码实际上是写的,尽管它说失败了。用户可以通过使用“忘记密码”来解决这个问题,但这仍然很烦人