희망이 템플릿이 도움이됩니다. 나는 Simon Holmes의 책 "Getting Getting Mean"에서 대부분을 얻었습니다. 신용은 그에게 간다.
var mongoose = require('mongoose');
var gracefulShutdown;
var dbURI = 'mongodb://localhost/xxx';
if (process.env.NODE_ENV === 'production') {
dbURI = process.env.MONGOLAB_URI;
}
mongoose.connect(dbURI);
// CONNECTION EVENTS
mongoose.connection.on('connected', function() {
console.log('Mongoose connected to ' + dbURI);
});
mongoose.connection.on('error',function (err) {
console.log('Mongoose connection error: ' + err);
});
mongoose.connection.on('disconnected', function() {
console.log('Mongoose disconnected');
});
// CAPTURE APP TERMINATION/RESTART EVENTS
// To be called when process is restarted or terminated
gracefulShutdown = function (msg, callback) {
mongoose.connection.close(function() {
console.log('Mongoose disconnected through ' + msg);
callback();
});
};
// For nodemon restarts
process.once('SIGUSR2', function() {
gracefulShutdown('nodemon restart', function() {
process.kill(process.pid, 'SIGUSR2');
});
});
// For app termination
process.on('SIGINT', function() {
gracefulShutdown('app termination', function() {
process.exit(0);
});
});
// For Heroku app termination
process.on('SIGTERM', function() {
gracefulShutdown('Heroku app termination', function() {
process.exit(0);
});
});
// TODO : For Modulus app termination
// BRING IN YOUR SCHEMAS & MODELS.
require('./yyy');
나는 내 신호를 외부 신호와 관련하여 더욱 구체적으로 편집했다. 답변 해 주셔서 감사합니다. – EhevuTov
앱 종료를 지속시키는 데이터베이스에 작업을 배치하는 일정 목록과 같은 작업 처리기와 같은 것들은 어떻습니까? 그래서 응용 프로그램이 작업 스택을 다시 시작할 때? – mjwrazor