Node.js 调用node server.close()时的异步任务
我正在开发一个node+express应用程序,希望它能成为一个优雅的应用程序。目标是以“正确”的方式进行部署,即:Node.js 调用node server.close()时的异步任务,node.js,express,Node.js,Express,我正在开发一个node+express应用程序,希望它能成为一个优雅的应用程序。目标是以“正确”的方式进行部署,即: 避免接受请求 完成当前的任务 终止节点进程 输入新代码 重新启动服务器- 对于正常关机,我使用的代码类似于: var express = require('express'); var app = express(); var server = app.listen(1337); process.on( 'SIGTERM', function () { server
- 避免接受请求
- 完成当前的任务
- 终止节点进程
- 输入新代码
- 重新启动服务器-
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()
中可以确保没有任务正在运行或挂起执行?
如果事件循环中的作业开始异步读取大文件并在线程池中工作,会发生什么情况执行
服务器。关闭保证线程池中也没有运行任务?
您真的需要自己执行吗?因为你可以使用pm2运行你的应用程序,并且它已经处理了优雅的重启、集群和许多其他功能。你所说的是指如何确保线程池中没有任务运行?@stdob假设有一个请求需要从数据库获取一些数据。该异步任务在线程池中完成,并通过回调通知我的单个线程执行。如果我关机,这些任务会发生什么?#mJehanno pm2还要求你的应用程序监听重要事件。它不会使停机时间延长you@EricSonaron我使用关键任务计数器:当关键任务开始时-计数器增加,当任务完成时-计数器减少。此外,在开始检查是否设置了“维护”标志之前,还需要执行关键任务:如果设置了,则在“重新启动”之前,这些任务不会启动。