当在Google应用引擎中返回POST或PUT HTTP请求时,索引构建是否始终完成?

时间:2009-07-27 18:52:16

标签: http google-app-engine

非常简单,我想知道(在谷歌应用引擎中):

  1. 当我发出POST或PUT HTTP请求时。
  2. POST或PUT会对Google应用引擎数据库进行更改
  3. POST或PUT请求返回后
  4. 是否保证索引已更新以反映所做的更改?
  5. 有一个解释here关于同时发出两个请求时会发生什么,但我没有看到这个问题具体回答。简而言之,我想知道当我从POST或PUT获得响应时,是否保证将来对数据存储区的所有请求都将具有反映POST或PUT所做更改的索引。在上面提供的链接的上下文中,是否保证当请求返回时数据库的视图将在里程碑B中?

    谢谢。

2 个答案:

答案 0 :(得分:4)

甚至比这更好 - 在put()完成时,所有读者都可以保证索引更新和可见。写入主数据存储区并且索引是并行完成的,并且put()请求在它们全部完成之前不会返回。

答案 1 :(得分:1)

保证在事务提交后更新索引(即,当提交返回时,这意味着达到里程碑B);如果您的请求成功完成,其所有事务都已提交或回滚(在这种情况下,您捕获异常并以某种方式处理它或将导致500)。

但是我不确定如果你的appserver在里程碑A和B之间崩溃会发生什么 - 显然你不会在客户端得到成功的响应,但我不知道有任何断言这真的会从正常。