Skip to content
Shutdown your Express.js apps gracefully
JavaScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
test
.gitignore
.travis.yml
CHANGELOG.md
LICENSE
README.md
index.js
package.json

README.md

@bufferapp/shutdown-helper

NPM Version Build Status

Provides a basic helper that listens to the SIGTERM signal and will shutdown the given Express.js server after the given delay in seconds.

Install

npm install @bufferapp/shutdown-helper -SE

Usage

To use with your Express.js app, you'll have to use Node's http package to start your server. Here is a full usage example:

const http = require('http')
const express = require('express')
const shutdownHelper = require('@bufferapp/shutdown-helper')
const createLogger = require('@bufferapp/logger')

const shutdownDelay = 20 // seconds

const logger = createLogger({ name: 'Images-Worker' })
const app = express()
const server = http.createServer(app)

server.listen(8080)

shutdownHelper.init({ server, shutdownDelay, logger })

The init function takes one argument with the following options:

  • server (http.Server) - An instance of a Node http server
  • shutdownDelay (Integer) - The delay in seconds after which to shut down the http server. Default 20 seconds.
  • logger (@bufferapp/logger) - (optional) - If passed in log messages to @bufferapp/logger otherwise logged to console

Elsewhere in your application, ideally in a health-check endpoint, you can use the isShutingDown function to check if your application has received a SIGTERM:

const { isShutingDown } = require('@bufferapp/shutdown-helper')

app.get('/health-check', (req, res) => {
  const code = isShutingDown() ? 500 : 200
  const status = code === 200 ? 'awesome' : 'shutting down'
  res.status(code).json({ status })
})
You can’t perform that action at this time.