2

我有使用 express.js 和 mongodb 作为数据存储的 node.js 网络服务器。此服务器由 控制runit,我正在尝试实现一种优雅关闭服务器的方法。

我正在为 and 实现信号处理程序SIGINTSIGTERM并且我知道您可以通过调用.close()createServer(). 到目前为止,一切都很好。

但是,即使没有更多请求即将出现,系统中可能已经有许多请求需要完成,然后我才能关闭数据库。

我正在使用 mongodb ReplicaSet,我认为如果我立即调用db.close(),其中一些请求可能会以某种方式失败。是否有某种方法可以以允许挂起的数据库查询完成的方式关闭数据库,或者我是否必须手动设置一个 +/- 计数器来查看有多少“活动”查询处于挂起状态,然后等待关闭直到它达到 0 ?

4

1 回答 1

1

您必须手动确保您处于干净状态才能关闭,因为驱动程序不会在关闭之前等待清除剩余操作。

随时为该功能登记一张票

https://github.com/mongodb/node-mongodb-native/issues/

于 2013-05-15T16:41:34.507 回答