在退出之前清理node.js

时间:2016-11-20 09:46:51

标签: node.js

我们有一个由Upstart管理的node.js / express / socket.io服务器。通过在bash中运行此命令来停止服务器:'stop nodejs',其中nodejs是具有以下内容的Upstart脚本:

Products

我们想在服务器停止之前执行一些清理工作,如上所述。我们已经尝试过process.on('exit'...)和process.on('SIGINT'...),但没有用。

如何在服务器停止之前调用回调?

1 个答案:

答案 0 :(得分:1)

在深入研究文档后,upstart会发出SIGTERM信号以终止该程序: http://upstart.ubuntu.com/cookbook/#stopping-a-job

因此您使用节点收听此信号: https://nodejs.org/api/process.html#process_signal_events

  

Windows上不支持SIGTERM,可以监听它。

简短的例子:

// Begin reading from stdin so the process does not exit.

process.stdin.resume();

// listen to the event

process.on('SIGTERM', () => {
  console.log('some cleanup here');
});

这应该可以胜任。

此外,您有一个pre-stop新手入门事件,您可以在关闭服务之前手动关闭节点,以确保正确关闭节点。

http://upstart.ubuntu.com/cookbook/#pre-stop