2017-12-02 23 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应用程序中。 –

相关问题