2012-02-20 2 views
2

У меня есть запрос в AppEngine, который занимает немного времени, чтобы завершить (много секунд). Есть ли способ определить, уже ли пользователь или какая-то сетевая проблема прервала запрос? Это позволило бы мне сохранить серверную нагрузку на продолжение генерации результатов, которая никуда не денется.Обнаружение запросов с прерыванием клиента в AppEngine

Я попытался следующие в Dev-режиме, но ни работал (еще не проверено ведет ли она по-разному в рабочем режиме):

  • Проверка завершается ли resp.getOutputStream без выбрасывания IOException
  • Проверка, существует ли прерывание отправляется в сервлет нить

Спасибо, Маркус

PS: Я действительно specif заинтересованным в этом вопросе, а не способами перестройки моего приложения, чтобы ускорить запрос или предотвратить прерывания или другие вещи.

ответ

1

Нет, это невозможно обнаружить внутри приложения. Я бы не стал беспокоиться об этом.

2

Я не знаю, возможно ли это вообще в App Engine, механизм приложения не разрешает запрос на выполнение. Ответ отправляется клиенту после возвращения обработчика/сервлета.

0

Путь поздний, но это может быть полезно. В Golang вы можете обнаружить прерывания, используя пакет Context.

Здесь полезное видео Франческ Campoy объясняя это:

https://www.youtube.com/watch?v=LSzR0VEraWw

+0

Хотя это теоретически может ответить на вопрос, [было бы предпочтительнее] (// meta.stackoverflow.com/q/8259) чтобы включить здесь основные части ответа и предоставить ссылку для справки. См. [Здесь] (https://meta.stackexchange.com/a/94027/285661) для получения инструкций по написанию * лучше * «ссылок на основе ссылок». Благодаря! – GhostCat

Смежные вопросы