У меня есть веб-сервер node.js с использованием express.js и mongodb в качестве хранилища данных. Этот сервер контролируется runit
, и я пытаюсь реализовать способ изящно закрыть сервер.Чистое закрытие сервера express.js + mongodb (using node.js)
Я реализую обработчик сигналов для SIGINT
и SIGTERM
, и я знаю, что вы можете остановить прослушивание новых соединений, вызвав .close()
на объекте, возвращаемый createServer()
. Все идет нормально.
Однако, даже если больше запросов не поступает, в системе может быть еще несколько запросов, которые необходимо завершить, прежде чем я смогу закрыть базу данных.
Я использую ReplicaSet mongodb, и я полагаю, что если я просто позвоню db.close()
сразу, некоторые из этих запросов могут каким-то образом сбой. Есть ли способ закрыть базу данных таким образом, чтобы завершить запросы ожидающих баз данных, или мне нужно вручную установить счетчик +/-, чтобы узнать, сколько ожидающих ожидающих «активных» запросов, а затем ждать завершения работы до тех пор, пока оно не достигнет 0 ?