在Google App Engine中以1秒的精确度跟踪时间

时间:2010-10-25 22:53:27

标签: google-app-engine time

我目前正在重写我的java代码以在Google App Engine上运行它。由于我无法使用Timer进行编程超时(不允许创建线程),我需要依靠系统时钟来标记超时启动的时间,以便我可以稍后对其进行比较,以确定是否发生超时。

现在,有几个人(甚至在Google工资单上)建议开发人员不要依赖系统时间,因为谷歌应用服务器的分布式性质并不能保持他们的时钟同步。有人说系统时钟的偏差可能高达10s甚至更多。

对于我的应用来说,1s偏差会非常好,2秒是可以容忍的,任何高于此值都会给我和我的应用程序用户带来很多悲伤,但是10秒的差异会让我的应用程序变得无法使用。

我不知道从那以后有什么改变是好的(我希望是的),但如果没有,那么除了拍摄一个新的单独请求以外,我的选择是什么,以便其处理程序将睡眠持续时间超时(由于请求超时限制,不能超过30秒),以保持超时持续时间一致。

谢谢!

更具体地说:

我正在尝试开发扑克游戏服务器,但对于那些不熟悉在线扑克如何工作的人:我有一组玩家附加到1个游戏实例。 Evey球员有一定的时间在超时发生之前采取行动,以便下一位球员可以采取行动。每个演员都有一个倒计时,每个客户都必须看到它。一次只能有一名球员采取行动。我需要的超时持续时间现在是10秒和20秒。

1 个答案:

答案 0 :(得分:1)

你永远不应该让你的请求处理程序睡觉或等待。如果请求处理程序平均完成1000毫秒或更短时间,App Engine将自动扩展您的应用程序;故意等待将毁了这一点。总有一个比睡觉/等待更好的选择 - 让我们知道你在做什么,也许我们可以推荐一个。