Ensure that during shutdown Koa returns correctly with a HTTP 503 Service Unavailable
. Based off express-graceful-shutdown
with the middleware adapted for Koa.
const http = require('http');
const Koa = require('koa');
const shutdown = require('koa-graceful-shutdown');
const app = new Koa();
const server = http.createServer(app.callback());
app.use(shutdown(server));
app.use(ctx => {
ctx.status = 200;
ctx.body = { foo: 'bar' };
});
server.listen(0, 'localhost', () => {
const { address, port } = server.address();
console.log('Listening on http://%s:%d', address, port);
});
npm install koa-graceful-shutdown --save
shutdown(server, opts) => function(ctx, next)
Argument | Description |
---|---|
server |
http.server |
opts |
Optional options |
opts.logger |
A logger that provides info , warn and error methods, defaults to console |
opts.forceTimeout |
Milliseconds to wait for server.close() to finish, defaults to 30000 |
- Original credits to Paul Serby for
express-graceful-shutdown
. - Any questions or suggestions please open an issue.
- Credits for multiple signal shutdown to Sebastian Hildebrandt taken from
http-graceful-shutdown
.
const beforeShutdown = (exitCallback) => {
// DO SOMETHING...
exitCallback();
};
app.use(shutdown(server, {
beforeShutdown,
}));
app.use(shutdown(server, {
responseType: 'application/json',
responseBody: JSON.stringify({ error: 'some error' }),
}));
app.use(shutdown(server, {
// It will exit on any of these signals
signals: 'SIGINT SIGTERM',
}));