我有使用express.js和mongodb作爲數據存儲的node.js web服務器。此服務器正受到runit
的控制,我試圖實現一種正常關閉服務器的方式。Express.js + mongodb服務器的清理關閉(使用node.js)
我在執行信號處理程序SIGINT
和SIGTERM
,我知道,你可以停止通過調用createServer()
返回的對象上.close()
偵聽新的連接。到現在爲止還挺好。
但是,即使沒有更多的請求即將到來,在我可以關閉數據庫之前,系統中可能已經有很多請求需要完成。
我正在使用一個mongodb ReplicaSet,並且我認爲如果我立即調用db.close()
,這些請求中的某些可能會以某種方式失敗。是否有某種方法可以關閉數據庫,以允許未完成的數據庫查詢完成,或者是否必須手動使用+/-計數器來查看有多少「活動」查詢處於待處理狀態,然後等待關閉,直至達到0 ?