如果要运行不同模块的多个清理功能,当nodejs退出时如何进行适当的清理?
我想在应用程序退出时关闭2个不同的数据库连接,1个websocket连接,所有这些连接都在不同的模块中。
如果我在所有模块中添加以下代码段
process.on('SIGTERM', function () {
console.log('SIGTERM fired');
process.exit(1);
});
然后只有第一个模块打印日志和进程退出。
如果我没有添加process.exit(1);
,则按Ctrl + C会打印所有日志,但进程不会退出。
答案 0 :(得分:0)
你可以做的是在你的模块中添加一个断开功能,在完成后回调,当你收到所有回调时,你可以退出这个过程。 所以,让我们说,
你有3个模块db1.js,db2.js和socketConnection.js,所以你可以有一个返回回调的close方法,例如:
db1.close=function(callback){
db.close();
callback();
}
并在您处理exit的主js文件中,导入所有3个模块并为所有连接调用close方法,然后退出该进程。例如:
process.on('SIGTERM', function () {
db1.close(function(){
db2.close(function(){
socketConnection.close(function(){
process.exit(1);
});
});
});
});
这将确保所有关闭功能已完成执行并安全退出您的过程。