Google App Engine - 计算当前请求到达应用引擎的时间

时间:2010-03-14 22:26:33

标签: java google-app-engine

有没有办法可以计算当前请求到达应用引擎的时间?

例如,用户可能会向我的应用程序发出请求,但由于应用程序引擎延迟,我的代码可能无法在一秒钟后开始处理请求,是否有办法让我知道用户已经不得不等待一秒钟?

我想知道如何做到这一点的原因是因为我想根据用户是否已经等待来做不同的事情。如果用户已经不得不等待很长时间,我将只为缓存中的页面提供服务,如果用户还没有等待,那么我将为他们提供一段需要一段时间才能呈现的页面。

2 个答案:

答案 0 :(得分:1)

对你的问题的简短且不满意的答案是否定的,你无法弄清楚用户等了多长时间。

应用引擎无法保证服务器时钟的一致性。您可以尝试计算从客户端时钟到服务器时钟的漂移,并将该漂移作为参数与客户端时间戳一起提交。但是,由于无法保证服务器内时间的一致性,因此该漂移仅适用于您计算的服务器。我相信你能得到的最接近的是基于几个延迟和返回时间戳样本的服务器计算漂移时间,但是一旦服务器改变你的计算将不再准确。

简单地抽样请求到达的时间也无济于事,特别是因为应用引擎上的冷启动会导致代码无法衡量的延迟增加。

答案 1 :(得分:0)

您可以发送带有请求的时间戳参数并测量差异,但为了确保结果,您必须从服务器发送时间戳,在客户端中递增它,将其发回,计算时间戳和时间戳之间的差异。服务器上的当前时间,将其除以2(因为您有2个请求,一个设置时间戳,一个检索它)。但这只是粗略计算。