Изящное завершение работы с nodejs pm2 SIGINT не работает - PullRequest
0 голосов
/ 11 января 2020

Здравствуйте, у меня есть сервер приложений, написанный на js и работающий на windows. Кроме того, я использую модуль pm2, но заметил, что когда я запускаю сервер приложений через pm2 start index.js -i 8, а затем хочу остановить все процессы pm2 через pm2 stop all, прослушиватели событий для SIGINT полностью игнорируются ...

Я должен добавить, что это работает нормально, когда используется с простым узлом, а не с pm2. Итак, мне было интересно, я что-то упускаю здесь очевидное? Ниже приведен пример тестового источника: pm2 docs

const http = require('http'); 
const port = 3000

const requestHandler = (request, response) => {
    response.end('Hello Node.js Server!'); 
}

const server = http.createServer(requestHandler);

server.listen(port, (err) => {
    if (err) {
        console.error(err);
    } else {
        console.log(`server is listening on ${port}`);
    } 
});

process.on('SIGINT', () => {

    console.log('NIX SIGINT!!!');

    process.exit(0);

});

process.on('message', (msg) => {

    if (msg == 'shutdown') {

            console.log('WIN SIGINT!!!');

            process.exit(0)

    } else {
        console.log('msg:', msg);
    }

});

Обновление:

Версии и ОС

OS: Windows

pm2 version: ^4.2.1

Nodejs version: v12.14.1

pm2 log

PM2      | App [grace:0] starting in -cluster mode-
PM2      | App [grace:0] online
0|grace  | server is listening on 3000
PM2      | Stopping app:grace id:0
PM2      | App name:grace id:0 disconnected
PM2      | App [grace:0] exited with code [1] via signal [SIGINT]
PM2      | pid=10820 msg=process killed
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...