@azangru/with-express-graceful-shutdown

Decorator for Express apps to enable graceful shutdown

Usage no npm install needed!

<script type="module">
  import azangruWithExpressGracefulShutdown from 'https://cdn.skypack.dev/@azangru/with-express-graceful-shutdown';
</script>

README

Graceful Shutdown

Summary

This is a decorator for an Express http server enabling its graceful shutdown.

Based on ideas from:

  1. express-graceful-shutdown middleware, which in turn used this blog post for inspiration;

  2. http-shutdown module

Installation

npm install @azangru/with-express-graceful-shutdown --save

Usage

const withGracefulShutdown = require('@azangru/with-express-graceful-shutdown');
const app = require('./app'); // a regular Express app
const logger = require('./logger') // a custom logger

const expressPort = 3000;
const forceTimout = 30 * 1000; // timeout after which the app should be shut down forcefully

const options = {
  logger,
  forceTimout
}

const server = app.listen(expressPort, () => {
  // your server is running
});

withGracefulShutdown(server, options);

Options

  • logger: a logger that provides info, warn, and error functions for recording graceful shutdown. Default: console.

  • forceTimeout: number of milliseconds to wait for server.close() to complete before calling process.exit(1). Default: 60000.