我有一个使用 express.js 和 mongodb 作为数据存储的 node.js 网络服务器。此服务器由 runit
控制,我正在尝试实现一种正常关闭服务器的方法。
我正在为 SIGINT
实现信号处理程序和 SIGTERM
,并且我知道您可以通过调用 .close()
来停止监听新连接。在 createServer()
返回的对象上.到目前为止一切顺利。
但是,即使没有更多的请求即将到来,系统中可能已经有许多请求需要在我关闭数据库之前完成。
我正在使用 mongodb ReplicaSet,我想如果我只调用 db.close()
马上,其中一些请求可能会以某种方式失败。有什么方法可以以允许挂起的数据库查询完成的方式关闭数据库,还是我必须手动有一个 +/- 计数器来查看有多少“事件”查询挂起,然后等待关闭直到它达到 0 ?
最佳答案
您必须手动确保您处于干净状态才能关闭,因为驱动程序不会在关闭前等待清除剩余的操作。
欢迎在
上注册该功能的票证关于node.js - 彻底关闭 express.js + mongodb 服务器(使用 node.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15583237/