У меня есть приложение, в котором пользователи выполняют геопространственный запрос в отношении базы данных mongo. Запрос может вернуть много тысяч результатов (~ 50k). Эти результаты затем передаются клиенту через websocket. Однако пользователи могут прервать набор результатов запроса и выполнить новый запрос. Пользователи будут часто запускать, прерывать и повторно запускать запросы порядка нескольких раз в минуту. Иногда они даже отменяют/перезапускают каждые пару секунд.Отмена работающего запроса
Вопрос в том, когда пользователь прерывает запрос, как мне отменить запрос на сервере, чтобы он не продолжал связывать ресурсы, передавая тысячи ненужных результатов? В настоящее время я вызываю destroy()
на курсор, но неясно, что это фактически останавливает выполнение запроса на сервере.
Какова наилучшая практика в этом случае?
Уже существует код, чтобы отменить отправку результатов клиенту через websocket (что-то очень похожее на то, что вы предложили). Мой вопрос действительно специфичен для отмены выполнения запроса (и последующей потоковой передачи результатов клиенту) на уровне MongoDB. – herbrandson
@herbrandson - Затем покажите нам конкретный код базы данных, о котором вы говорите, и код последовательности, который управляет, когда все будет работать. Вопросы о коде должны включать соответствующий код. – jfriend00