节点server.close()调用

时间:2017-04-26 14:10:44

标签: node.js express

我正在开发一个节点+表达式应用程序,并希望准备它以使其优雅。目标是以“正确”的方式进行部署,即:

  • 避免接受请求
  • 完成当前的
  • 终止节点进程
  • 放置新代码
  • 重新启动服务器 -

对于正常关机,我使用的代码类似于:

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是否保证线程池中没有任何任务正在运行?

0 个答案:

没有答案