micron-throttle
v0.1.0Micron-throttle
Token bucket based HTTP request throttle for Node.js
Installation
npm install micron-throttle
Basic Use
The throttle module can be used in just about any application that supports the function (req, res, next)
middleware convention (such as express, connect, union or restify). For example in restify:
var http = require('restify'),
throttle = require('micron-throttle');
// Create the server and pass-in the throttle middleware
var server = restify.createServer();
server.use(throttle({
burst: 100,
rate: 50,
ip: true,
overrides: {
'192.168.1.1': {
rate: 0, // unlimited
burst: 0
}
}
}));
// Define a route
server.get('/hello/:name', function (req, res, next) {
res.send('hello ' + req.params.name);
});
// Listen
server.listen(3333);
Options
Name | Default | Type | Description |
---|---|---|---|
rate | 10 | Number | Steady state number of requests/second to allow |
burst | 25 | Number | If available, the amount of requests to burst to |
ip | true | Boolean | Do throttling on a /32 (source IP) |
xff | false | Boolean | Do throttling on a /32 (X-Forwarded-For) |
username | false | Boolean | Do throttling on req.username |
overrides | null | Object | Per "key" overrides |
tokensTable | n/a | Object | Storage engine; must support set/get |
maxKeys | 10000 | Number | If using the built-in storage table, the maximum distinct throttling keys to allow at a time |
Testing
npm test
Credits
This module is adapted from restify's throttle plug-in – originally developed by Mark Cavage.
npm i micron-throttle
Source Code
github.com/thisandagain/micr...Metadata
- Unknown
- >=0.8
- Andrew Sliwinski
- released 11/25/2013