javascript - Node.js SIGTERM 实现注意事项

标签 javascript node.js

我有一个无状态的 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/

相关文章:

node.js - 在 OSX 上全局 NPM 安装失败

javascript - 添加原生数组原型(prototype)方法

javascript - 如何将高度设置为自动动画?

javascript - onClick 事件在 Safari 中不起作用,但在 IE/FF/Chrome/Opera 浏览器中运行良好

Node.js process.stdout.write 在 for 循环中闪烁

javascript - 使用 svg 格式的 D3.js 预渲染饼图服务器时出错

node.js - 注册和 req.user.roles 后 SEAN.js 自动登录

javascript - 运行 node.js 服务器端脚本时出错

javascript - 通过光标拖动使 d3.js 数据图旋转

javascript - Mongoose ODM 在 MongoDB 集合中保存错误的模型名称