GracefulShutdownManagerを使ってExpressサーバーを正常に終了させる
Node.jsのパッケージ、GracefulShutdownManagerを使って、コマンドプロントなどから強制終了した際にExpressサーバーを正常に終了させる方法です。
インストール
次のコマンドを実行してGracefulShutdownManager
をインストールします。
npm install @moebius/http-graceful-shutdown
使用方法
実際のソースコードに次のような内容を追記します。webServer
はhttps.createServer()
などで作成したExpress
のサーバーです。
// GracefulShutdownManager
const GracefulShutdownManager = require('@moebius/http-graceful-shutdown').GracefulShutdownManager;
// Windows用の処理.
if (process.platform === "win32") {
console.log('windows platform');
const readline = require("readline").createInterface({
input: process.stdin,
output: process.stdout
});
readline.on("SIGINT", () => {
console.log('SIGINT (readline)');
process.emit("SIGINT");
});
}
const shutdownManager = new GracefulShutdownManager(webServer);
process.on('SIGINT', () => {
console.log('SIGINT');
shutdownManager.terminate(() => {
console.log('Server is gracefully terminated.');
process.exit();
});
});
実行結果
サーバー起動中のコンソール・コマンドプロンプトで強制終了(Ctrl + C)した場合に表示されるログです。
Ubuntu の場合
SIGINT
Server is gracefully terminated.
Windowsの場合
SIGINT (readline)
SIGINT
Server is gracefully terminated.