Google App Engine - определите время, когда текущий запрос достиг ядра приложения. - PullRequest
2 голосов
/ 15 марта 2010

Есть ли способ узнать, когда текущий запрос достиг движка приложения?

Например, пользователь может сделать запрос к моему приложению, но из-за задержек ядра приложения мой код может не начать обрабатывать запрос до одной секунды спустя, есть ли способ выяснить, что пользователю уже пришлось ждать одну секунду?

Причина, по которой я хочу знать, как это сделать, заключается в том, что я хочу делать разные вещи в зависимости от того, ожидал ли пользователь уже ждать. Если пользователю уже пришлось ждать значительное количество времени, я просто предоставлю ему страницу из кэша, если пользователю еще не пришлось ждать, тогда я предоставлю ему страницу, для отображения которой требуется некоторое время.

Ответы [ 2 ]

1 голос
/ 12 мая 2010

Короткий и неудовлетворительный ответ на ваш вопрос - нет, вы не можете понять, сколько времени пользователь ждал.

В ядре приложения нет никаких гарантий согласованности тактовых импульсов сервера. Вы можете попытаться вычислить отклонение от часов клиента до часов сервера и передать это отклонение в качестве параметра вместе с отметкой времени клиента. Однако, поскольку нет гарантии согласованности времени внутри сервера, этот дрейф применим только для сервера, с которого вы его рассчитали. Я полагаю, что самое близкое, что вы можете получить, - это расчетное время дрейфа с сервера, основанное на нескольких выборках задержки и возвращенных временных меток, но как только сервер изменится, ваши вычисления не будут точными.

Простая выборка времени поступления запроса также не поможет, тем более что холодный запуск ядра приложения приведет к увеличению задержки, которая не может быть измерена вашим кодом.

0 голосов
/ 15 марта 2010

Вы можете отправить параметр метки времени вместе с запросом и измерить разницу, но чтобы быть уверенным в результате, вам нужно отправить метку времени с сервера, увеличить ее на клиенте, отправить обратно, вычислить разницу между меткой времени текущее время на сервере, разделите его на 2 (потому что у вас есть 2 запроса, один устанавливает метку времени и один возвращает его обратно). Но это будет только грубый расчет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...