こんにちは、クラスタモジュールを使用しているときに信号処理のソースコードはどこにありますか?私はSIGTERMを扱いたいので、httpサーバを "優雅"に閉じることができますが、マスタープロセスがこのシグナルを受信すると、httpサーバはリッスンを停止します。クラスタモジュールを使用したSIGTERMの処理
"終了" ハンドラが(この関数は、呼び出されたときにSIGTERMまたはSIGINT)
function handleTermination(httpServer?: http.Server) {
if (Store.receive<symbol, boolean>(STORE_KEYS.isTerminating)) {
return
}
Store.store<symbol, boolean>(STORE_KEYS.isTerminating, true)
if (httpServer) {
if (!httpServer.listening || isDevelopment) {
closeAll()
process.exit(0)
return
}
setTimeout(() => {
if (process.env.GRACEFUL_SHUTDOWN !== undefined) {
gracefulCloseSockets()
}
httpServer.close(endProcess)
}, 5000)
} else {
endProcess()
}
}
例ルータハンドラ
function timerHandler(_req: RequestObject, respond: ResponseHandler) {
setTimeout(() => respond('ok'), 2000)
}
ありがとうございます、ありがとうございます、私はこれを確認して報告します。 – Siggy
これらのイベントを使用すると、httpサーバーはすでに閉じられています。これは私が達成したいことではありません。 – Siggy