npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

express-graceful-shutdown-handler-patched

v1.0.3

Published

Middleware to handle graceful shutdown on any uncaught exception.

Downloads

1

Readme

express-graceful-shutdown-handler-patched

[![NPM Version][npm-image]][npm-url] [![NPM Downloads][downloads-image]][downloads-url]

Middleware to handle graceful shutdown on any uncaught exception.

After encountering an exception this middleware stops accepting new requests, waits for the user's exception handler and all currently running requests to finish within a certain grace period and exits.

Installation

$ npm install express-graceful-shutdown-handler-patched

API

var gracefulShutdown = require('express-graceful-shutdown-handler-patched')

Note Requiring the module adds a uncaughtException listener.

gracefulShutdown(options)

Creates a graceful shutdown middleware with the given options.

Note Make sure it's attached as the first middleware.

domainEnabled

Create a new domain and bind request and response to it. This enables the library to return 500 error on the request that caused an unhandled exception to happen, instead of severing the connection.

The default value is true.

domainIdFunc

If domainEnabled is set to true, you can look at process.domain.id in your onExceptionFn to see the unique request id. This function is given req and is expected to return this id.

The default behavior is to return an incremented number for each request.

onExceptionFn

Sets a function which will be called in the event of an unhandled exception. The function is given err as the first argument and callback as the second argument.

The default value is a call to console.error.

shutdownGraceSeconds

Controls the grace period which is given for your exception handler and currently running requests to finish. If they are not completed within this time, process is killed anyway.

The default value is 15.

inShutdownRespondWithStatus

Control the status which is returned for any new request done after the shutdown process is started. Use it in your load balancer (e.g. nginx) to redirect the request to another server.

The default value is 503.

Example

A simple example using express-graceful-shutdown-handler-patched to log the exception asynchronously (for example to Slack), waiting for the logger to complete the request.

var express = require('express')
var gracefulShutdown = require('express-graceful-shutdown-handler-patched')

var app = express()

###
Unhandled exceptions handling w/ graceful shutdown.
###

app.use(gracefulShutdown({
  onExceptionFn: function (err, callback) { logger.error(err, callback); }
}))

app.get('/cause_exc', function (req, res, next) {
  setTimeout(function() {
    throw new Error("Error!");
  }, 1000);
})

app.get('/long_running_request', function (req, res, next) {
  setTimeout(function() {
    res.sendStatus(200);
  }, 10000);
})

Use curl to fetch the /long_running_request route, then immediately after fetch the /cause_exc route.

You'll see the exception logged to the console and the first request to finish before server is killed.

Every consecutive request will return with HTTP status code 503.

License

MIT