node.js - 如何为 koajs 服务器做优雅的停止?

标签 node.js oracle express mongoose koa

expressjs优雅停止的例子很多,koajs如何实现?

我也想断开数据库连接

我有一个 mongoose 数据库连接和 2 个 oracle 数据库连接 ( https://github.com/oracle/node-oracledb )

最佳答案

前段时间我创建了一个 npm 包 http-graceful-shutdown ( https://github.com/sebhildebrandt/http-graceful-shutdown )。这与 httpexpresskoa 完美配合。由于您还想添加自己的清理功能,因此我修改了包,这样您现在就可以添加自己的清理功能,该功能将在关机时调用。所以基本上这个包处理所有 http 关闭事情加上调用你的清理函数(如果在选项中提供):

const koa = require('koa');
const gracefulShutdown = require('http-graceful-shutdown');
const app = new koa();

...
server = app.listen(...); // app can be an express OR koa app
...

// your personal cleanup function - this one takes one second to complete
function cleanup() {
  return new Promise((resolve) => {
    console.log('... in cleanup')
    setTimeout(function() {
        console.log('... cleanup finished');
        resolve();
    }, 1000)       
  });
}

// this enables the graceful shutdown with advanced options
gracefulShutdown(server,
    {
        signals: 'SIGINT SIGTERM',
        timeout: 30000,
        development: false,
        onShutdown: cleanup,
        finally: function() {
            console.log('Server gracefulls shutted down.....')
        }
    }
);

关于node.js - 如何为 koajs 服务器做优雅的停止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43468463/

相关文章:

javascript - 如何验证 Node.js 和 Express 中应该相等的两个字段?

node.js - 优化通过 Node 查询redis中的多键

sql - oracle中列的层次总和

javascript - 如何在 Node.JS 中接收 req.body.model 的整个对象而不是单独接收它的所有变量?

json - 如何使用 Express 或 Body-Parser 拒绝无效的 JSON 正文

sql - 为什么我的 'WHERE' 子句基于 'DATE' 失败?

java - 如何在免费 Oracle 云上安装 JServer

sql - 为什么 NVL2 在预期之外返回 NULL?

javascript - 如何在Node JS中使用Redis session 设置Heroku Redis

javascript - Express Router Regex - 如何匹配包含连字符的字符串文字?