2017-12-02 20 views
0

有很多問題要問:我們如何退出以及它在節點js中究竟做了什麼:使用process.exit()命令。但是何時和爲什麼你需要退出?有沒有什麼好的理由讓你的應用程序調用node.js的`process.exit()`?

我目前的瞭解是node/nodemon app.js用我們的網站運行的服務器啓動一個進程。那麼當我們爲什麼要在生產中關閉它時,我們需要 ?

我碰到這個就看見了如何關閉這個SO文章(接受的答案,評論部分)MongdoDB連接後: Mongoose Close Connection

回答

3

process.exit()有所需要的雲服務,如Heroku的。

如果您將應用程序託管在Heroku等服務上,那麼應用程序將每天至少重新啓動一次。這被稱爲cycling。當Heroku的賽道週期將發送SIGTERM到應用程序,其中,例如,可以通過以下方式處理:

process.on('SIGTERM', gracefulShutdown); 

function gracefulShutdown() { 
    mongoose.connection.close(() => { 
    console.log('Shutting down'); 
    process.exit(0); 
    }); 
} 

當應用程序sigtermed我們要優雅地關閉數據庫連接之前我們入手關閉。我們通過偵聽SIGTERM事件來停止默認行爲,但我們仍然需要做SIGTERM應該做的事情,這會阻止這個過程。之後Heroku將重新啓動應用程序。

+0

非常感謝!非常詳盡的解釋。我會將代碼添加到我的Heroku應用程序中。 –

相關問題