Как выполнить действие при выключении?

Предположим, я пишу модуль handler.js как промежуточное ПО Express.js:

var info = {};

infohandler.setinfo = function(i){ info[i] = Math.random(); }
infohandler.saveinfo = function(){ fs.writeFileSync("info.json", info); }

function handler(req, res, next){ // here are some operation call to infohandler according to req. }

module.exports = handler;

И в app.js я импортирую этот handler.js:

var handler = require("handler");

Я хочу сохранить некоторую информацию в файл прямо перед выключением сервера. Как я могу это сделать?


person Kuan    schedule 26.05.2015    source источник


Ответы (1)


Используйте process.on для привязки к exit. Это событие вызывается при корректном завершении работы:

process.on('exit', function () {
    // your clean up code
});

Если вы хотите перехватывать определенные сигналы (например, SIGTERM, который по умолчанию отправляется с помощью kill(1)) привяжите к имени сигнала:

process.on('SIGTERM', function () { /* ... */ });

Обратите внимание, что это отключит действие по умолчанию (завершение работы). Не забудьте вручную вызвать process.exit.

person TimWolla    schedule 26.05.2015
comment
Спасибо, но я все еще не понимаю, как я могу вызвать функцию infohandler.saveinfo? - person Kuan; 27.05.2015
comment
@Kuan Назовите это там, где написано ваш код очистки. Убедитесь, что там выполняются только синхронные операции. - person TimWolla; 27.05.2015