Я пытаюсь создать способ корректно завершить работу моего сервера, но не похоже, что метод, вызываемый в ответ на SIGINT, полностью завершается.
Я добавил функцию обратного вызова к сигналу SIGINT, используя process.on('SIGINT', cb)
var stop = () => {
console.log("stopping server");
return new Promise((resolve, reject) =>
server.close(() => { console.log("server closed"); resolve(); }))
.then(() => new Promise((resolve, reject) => setTimeout(() => { console.log("time out finished"); resolve(); }, 5000)))
.then(() => process.exit(0));
}
process.on("SIGINT", stop);
Я добавил туда setTimeout, просто чтобы проверить, ждет ли сервер полной остановки.
Когда я отправляю SIGINT процессу, я получаю вывод
stopping server
В некоторых случаях и сервер остановки, и сервер закрывают логи, но не всегда.
Я пытался реализовать функцию ожидания из этого предыдущего вопроса: Как предотвратить завершение Node.js во время ожидания обратного вызова? , но я все еще достигаю тех же результатов, что и выше.
Кто-нибудь знает обходной путь, который позволит этому методу полностью завершить работу до выхода из сервера?