我有一个nodejs服务器运行快速服务器出http调用。如果出现问题,是否有推荐的方法可以优雅地关闭服务器?我应该让服务器以某种方式运行吗?Nodejs /快递,优雅地关机
I.E.在一个未捕获的例外情况下,服务器只是停止,我认为这会杀死连接的客户端,而不是将它们交还给回应。
我应该:
- 等待所有的HTTP连接完成之前,我允许服务器死亡(然后重新启动它)。
- 或者我应该试着阻止服务器永生?
这是正确的吗?
process.on('exit', function() {
console.log('About to exit, waiting for remaining connections to complete');
app.close();
});
在这种情况下,可能已经引发错误而使服务器处于不确定状态,服务器将继续完成了剩余的连接。
有没有什么好的方法来处理错误继续运行,或者我应该让服务器死机并重新启动?
这是一个很好的解释。但有一点我仍然不清楚。 '重要的是要记住,一旦抛出意外的异常,你的应用程序处于未定义的状态。问题请求可能永远不会完成,并且您的应用程序永远不会重新启动。这听起来好像我不应该打电话应用程序。关();在过程'退出'。真正? – lostintranslation
在''process'' exit'处理程序中调用'app.close()'是毫无意义的:[docs say](http://nodejs.org/api/process.html#process_event_exit)*“主事件循环将会在'exit'回调完成后不再运行。“*换句话说,'exit'事件告诉你程序**将在你的函数返回后结束。由于没有下一个勾号,关闭网络监听器毫无意义;接受传入连接的代码永远不会有机会运行。 – josh3736
真棒,谢谢! – lostintranslation