我有一個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