![]() |
1
1
如果试图放置、获取或删除太多的实体或属性太多的实体,或者数据存储超载或出现问题,则可能会发生这种情况。 如果您经常看到异常,我想这是因为数据存储操作太大了,所以重试并没有什么帮助。如果您只是为了防范可能引发异常的风险而进行编码,那么您可以再试一次(可能是通过将要执行的任务排队)。但是,如果你不能访问数据存储,谁会说你可以将任务排队呢? 如果你想成为防弹强悍,并且你可以确保你在社交网络上执行的操作是等量的(可以重复),那么:
当然,您必须对返回给iPhone客户端的响应代码保持谨慎,因为成功可能需要 长的 时间-比iPhone应用程序发出请求的持续时间长。所以你希望你的应用引擎请求也是等幂的,你可能想要某种取消。 如果你从社交网络中得到的只是成功或失败,而如果成功的话,你的操作就不能重复,那么你就有麻烦了。这是一个在网络上提供的垃圾API,因为仅仅因为Web服务器向您发送成功的响应并不意味着您收到了它,所以有时调用方无法知道他们已经成功了,即使成功创造了责任。但它确实发生了。 |
![]() |
2
0
我觉得这个说法令人担忧: 在实践中,重试通常是成功的;即使对于小型操作,也会定期获得数据存储超时。1月23日14:59 如果GAE存在可靠性问题,如何认真对待它?通常情况下,您是否发现数据存储速度较慢?你对这些例外的频率估计是多少? |
![]() |
3
0
这是任何分布式系统的基本问题。一般来说,没有简单的“防弹”解决方案。如果可能的话,最好的选择是确保您的一个或两个操作都是等幂的——也就是说,多次执行它们没有任何效果。对于数据存储来说,这相当容易:如果您指定了一个密钥名,多个PUT将简单地相互覆盖。如果可能的话,你也应该在你的社交API中使用等幂,这样你就可以在失败的情况下安全地重新执行。 |