我正在开发一个节点+表达式应用程序,并希望准备它以使其优雅。目标是以“正确”的方式进行部署,即:
对于正常关机,我使用的代码类似于:
var express = require('express');
var app = express();
var server = app.listen(1337);
process.on( 'SIGTERM', function () {
server.close(function () {
console.log( "Closed out remaining connections.");
// Close db connections, etc.
//
// How to ensure no tasks is running in the thread pool ???
});
setTimeout( function () {
console.error("Could not close connections in time, forcefully shutting down");
process.exit(1);
}, 30*1000);
});
我怀疑是否可以确定内部server.close()
是否可以确定没有任务正在运行或待执行?
如果事件循环中的作业开始异步读取大文件并且在线程池中工作,会发生什么? server.close
是否保证线程池中没有任何任务正在运行?