@ya_myn/request-limiter
v2.0.3
Published
Simple request limiter that allows you to control the number of simultaneous request to any resource
Downloads
15
Readme
request-limiter 2.0.0
Simple request limiter that allows you to control the number of simultaneous request to any resource with cashe (use 'node-cashe')
Install
npm i request-limiter
Examples
Require module
const ReqLimiter = require('request-limiter').getInstance('myInstance', options);
ReqLimiter.getInstance(instance, options)
Get or create instance Returns: instance of ReqLimiter
Parameters
| Name | Type | Description | Required |
| -------- | -------- | -------------------------------- | -------- |
| instance | string
| ReqLimiter instances name |true |
| options |
object` | ReqLimiter configuration options | false |
options properties
| Name | Type | Description | default |
| ------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------- |
| maxAttempts | number
| Maximum number of request attempts for one function | 42 |
| maxRepeatAttempts | number
| Maximum number of attempts to request a request after receiving an error from the remote resource about exceeding the limit | 6 |
| checkDelay | number
| The amount of time in millisecond after which the limiter will make a new attempt to add the request to the queue | 1200 |
| maxOneTimeReq | number
| The number of request that can be executed simultaneously in one port | 6 |
| clientName | string
| The name to be passed to the callback function in the reqWithCheck method | client |
| limitErrorValidator | function
| A simple function that checks whether an error sent from a remote resource belongs to an error exceeding the request limit returns a boolean | error => error.code === 403 |
| ReqLimitError | Error
| Error class or classes that extend it. allows to give a custom error to the client | ReqLimitError |
ReqLimiter.haveConnect(port)
checks if a port exists and if there is cached data for it Returns: any
| Name | Type | Description | Required |
| ---- | -------- | --------------------------------------- | -------- |
| port | string
| name of the port you would like, of use | true |
const isConnect = ReqLimiter.haveConnect('myPort');
ReqLimiter.setClient(port, client)
set client data for your port Returns: void
| Name | Type | Description | Required |
| ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
| port | string
| name of the port you would like, of use | true |
| client | any
| any information you want to saved that it will be passed as a parameter named <ReqLimiter. clientName> for the callback in the reqWithCheck method | true |
ReqLimiter.setClient('myPort', { accessToken: 'myAccessToken' });
ReqLimiter.reqWithCheck(port, cb, args, attempts)
Method that takes a function that needs to be queued for a given port
Returns: cb call results
| Name | Type | Description | Required |
| -------- | ---------- | ------------------------------------------------------------- | -------- |
| port | string
| name of the port you would like, of use | true |
| cb | function
| callback function, that need add to port que | true |
| args | object
| arguments for callback function | false |
| attempts | number
| The number of attempts that have already been made, default 0 | false |
const fetchToImage = ({ client, id }) => {
return myFetcher('url', { accessToken: client.accessToken, id });
};
ReqLimiter.reqWithCheck('myPort', fetchToImage, { id: 'myImgId' }).then((data) => {
// console.log(data)
// returns result to call fetchToImage
});
Documentation generated with doxdox.