我有一个无状态的 Node.js 应用程序。它是一个用express实现的api,连接到mongoDB数据库。每个请求完全独立于其他请求(因此无状态)。
我想实现一个 SIGTERM 以便正常关闭,但我不知道应该考虑什么。
我确信我应该关闭我的数据库连接。但是,如果我这样做:
process.on('SIGTERM', function () {
server.close(function () { //Stops express
db.close(false, function() { //Closes database connection
process.exit(0);
});
});
});
我可以确保这样做不会中断任何请求吗?如果没有,我如何知道是否正在发出请求以及如何等待请求完成?我应该在这段时间停止监听请求吗?如果是这样,怎么办?
提前感谢您的回答。
最佳答案
假设server
是一个http.Server
实例,调用.close()
将阻止服务器接受新连接(documentation) ,但现有请求将继续运行,直到完成。
只有在处理完所有请求后才会调用回调,因此可以安全地假设此时您可以关闭数据库连接(不会再有任何请求监听它)。
关于javascript - Node.js SIGTERM 实现注意事项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32463454/