Может ли http-сервер обнаружить, что клиент отменил свой запрос?

Мое веб-приложение должно обрабатывать и обслуживать много данных для отображения определенных страниц. Иногда пользователь закрывает или обновляет страницу, пока сервер все еще занят ее обработкой. Это означает, что сервер продолжит обрабатывать данные только в течение нескольких минут, чтобы отправить их клиенту, который больше не слушает.

Можно ли обнаружить, что соединение было разорвано, и отреагировать на это?

В этом конкретном проекте мы используем Django и NginX или Apache. Я предположил, что это возможно, потому что сервер разработки Django, кажется, реагирует на отмененные запросы, печатая исключения Broken Pipe. Я хотел бы, чтобы это вызывало исключение, которое мог поймать мой код приложения.Похоже, JSP может сделать это. Так может node.js Вот.

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

Ответы на вопрос(2)

Ваш ответ на вопрос