Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine Appengine ndb-事务可以报告失败但成功_Google App Engine_Transactions - Fatal编程技术网

Google app engine Appengine ndb-事务可以报告失败但成功

Google app engine Appengine ndb-事务可以报告失败但成功,google-app-engine,transactions,Google App Engine,Transactions,在发现以下情况后,我对使用Appengine有些担忧: 注意:如果您的应用程序在提交 事务,它并不总是意味着事务失败。你 可以接收超时、TransactionFailedError或InternalError 已提交事务的情况下的例外情况,以及 最终将成功应用。只要有可能,尽你所能 云数据存储事务是幂等的,因此如果重复 交易,最终结果将是相同的 Ndb交易: 这篇文章之前已经提到过这个问题,但没有回答: 我已经搜索并阅读了这个问题,但找不到更具体的内容。 我有一个游戏,我将执行以下操作:

在发现以下情况后,我对使用Appengine有些担忧:

注意:如果您的应用程序在提交 事务,它并不总是意味着事务失败。你 可以接收超时、TransactionFailedError或InternalError 已提交事务的情况下的例外情况,以及 最终将成功应用。只要有可能,尽你所能 云数据存储事务是幂等的,因此如果重复 交易,最终结果将是相同的

Ndb交易:

这篇文章之前已经提到过这个问题,但没有回答:

我已经搜索并阅读了这个问题,但找不到更具体的内容。 我有一个游戏,我将执行以下操作:

  • 报名
  • 登录
  • 更新进度
  • 更新密码/电子邮件
  • 删除帐户
因为一次只修改一个实体(更新进度或pw等)。将来我可能会添加多人游戏,这可能会使事情复杂化,因为这可能意味着一次更新多个实体

如果我们从我所拥有的开始,我会看到一些问题。我需要确切地了解事情是如何运作的

  • 如果报告了一个失败,但后来它实际上成功了,这意味着什么? 假设进度在之前已成功保存,并且为12级。现在用户发布他/她已提升到15级。它报告失败,但随后成功。假设用户的兄弟在另一台设备上使用相同的配置文件,该设备仅处于12级,尚未看到其他更新,他完成13级并保存。现在会发生什么? 事务包括读取保存的级别,如果级别更大,则写入新级别,否则保留旧级别。 但是事务号2是否会查看旧值,决定它应该写入13,然后在事务1之后排队,以便事务1最终完成并写入15,但事务2会因为查看旧值而写入13? 或者事务1会在实际真值写入和写入15之前读取值,然后事务2也会读取现在为15的真值,然后不写入13? 交易已提交意味着什么
  • 对于注册,这可能意味着注册被报告为失败,但被写入数据库,然后用户尝试再次注册,但服务器表示电子邮件已经存在。这会惹恼人们
  • 更新电子邮件和密码-用户更新pw或电子邮件,并报告失败。所以他们用旧密码登录只是为了看看它不起作用,因为新密码实际上是写的,尽管它说失败了。用户可以通过使用“忘记密码”来解决这个问题,但这仍然很烦人
什么时候返回TransactionFailedError之类的异常?每次尝试后还是仅在所有重试失败后

有没有可能对这一切发生的可能性做出某种估计?我的意思是,如果我有10个人在使用它,我想它永远不会发生,而且似乎一切都正常,但是我有一百万用户,而且到处都会失败。。。 如果这些问题一年一次发生在百万分之一的用户身上,那么就不必担心,但如果每个用户每周都发生一次,那就是一场灾难