POST的App Engine顺序与插入顺序

时间:2014-02-24 08:13:18

标签: google-app-engine app-engine-ndb

首先,我对GAE和数据存储区都很陌生,所以我还不习惯大规模,最终的一致性等东西:)

但是,我正在设计一个小型多人游戏的后端。玩家/客户在事情发生时发布事件,其他客户轮询以获取这些事件。事件与ndb.DateTimeProperty字段一起存储,auto_now_add = True(creation_time)。

然而,昨晚我注意到一些奇怪的事情,似乎他们的秩序有时混淆了。即使“POST事件1”在“POST事件2”之前的一秒钟内完成,事件2也可以在事件1之前几毫秒保存(或者我的客户端代码不好:))。这是在使用dev_appserver的时候,还没有在真正的GAE中尝试过它。

我想我的(第一个)问题是;这是正常的GAE行为吗?也许无法保证一个请求在另一个请求之前处理(保存),无论请求何时进入?

如果是这样,是否有某种方式可以按照我的意愿获得这种行为?以某种方式保持实体的顺序?事件具有相同的祖先(游戏),并存储在事务中。至少我希望如此,我用@ ndb.transactional标记了方法: - )

如果我在事件上手动设置日期时间,使用datetime.now()而不是auto_now_add,在保存实体之前的POST处理程序中,这会有效吗?不同的GAE实例是否是时间同步的?

嗯..我想的越多,感觉越不可能:) ..客户应该设置事件的时间戳吗?他们当然可能有错误的时间设置,但也许他们可以先与服务器同步时间或什么......?

1 个答案:

答案 0 :(得分:0)

通过在发送下一个请求之前等待一个请求完成“解决”.. :-P