bottleneck - Task scheduler and rate limiter

  •        240

Bottleneck is a lightweight and efficient Task Scheduler and Rate Limiter for Node.js and the browser. When dealing with services with limited resources, it's important to ensure that they don't become overloaded.Bottleneck is an easy solution as it does not add much complexity to your code.

https://github.com/SGrondin/bottleneck

Tags
Implementation
License
Platform

   




Related Projects

node-rate-limiter - A generic rate limiter for node

  •    Javascript

Provides a generic rate limiter for node.js. Useful for API clients, web crawling, or other tasks that need to be throttled. Two classes are exposed, RateLimiter and TokenBucket. TokenBucket provides a lower level interface to rate limiting with a configurable burst rate and drip rate. RateLimiter sits on top of the token bucket and adds a restriction on the maximum number of tokens that can be removed each interval to comply with common API restrictions like "150 requests per hour maximum". A synchronous method, tryRemoveTokens(), is available in both RateLimiter and TokenBucket. This will return immediately with a boolean value indicating if the token removal was successful.

WebApiThrottle - ASP.NET Web API rate limiter for IIS and Owin hosting

  •    CSharp

ASP.NET Web API Throttling handler, OWIN middleware and filter are designed to control the rate of requests that clients can make to a Web API based on IP address, client API key and request route. WebApiThrottle package is available on NuGet at nuget.org/packages/WebApiThrottle.Web API throttling can be configured using the built-in ThrottlePolicy. You can set multiple limits for different scenarios like allowing an IP or Client to make a maximum number of calls per second, per minute, per hour per day or even per week. You can define these limits to address all requests made to an API or you can scope the limits to each API route.

flask-limiter - rate limiting extension for flask applications

  •    Python

Flask-Limiter provides rate limiting features to flask routes. It has support for a configurable backend for storage with current implementations for in-memory, redis and memcache. Add the rate limiter to your flask app. The following example uses the default in memory implementation for storage.

redis-cell - A Redis module that provides rate limiting in Redis as a single command.

  •    Rust

A Redis module that provides rate limiting in Redis as a single command. Implements the fairly sophisticated generic cell rate algorithm (GCRA) which provides a rolling time window and doesn't depend on a background drip process. The primitives exposed by Redis are perfect for doing work around rate limiting, but because it's not built in, it's very common for companies and organizations to implement their own rate limiting logic on top of Redis using a mixture of basic commands and Lua scripts (I've seen this at both Heroku and Stripe for example). This can often result in naive implementations that take a few tries to get right. The directive of redis-cell is to provide a language-agnostic rate limiter that's easily pluggable into many cloud architectures.

async-ratelimiter - Rate limit made simple, easy, async.

  •    Javascript

Rate limit made simple, easy, async. Based on ratelimiter. It creates an rate limiter instance.


gubernator - High Performance Rate Limiting MicroService and Library

  •    Go

Gubernator is a distributed, high performance, cloud native and stateless rate limiting service. Gubernator is stateless in that it doesn’t require disk space to operate. No configuration or cache data is ever synced to disk. This is because every request to gubernator includes the config for the rate limit. At first you might think this an unnecessary overhead to each request. However, In reality a rate limit config is made up of only 4, 64bit integers.

bucket4j - Java rate limiting library based on token/leaky-bucket algorithm.

  •    Java

Copyright 2015-2019 Vladimir Bukhtoyarov Licensed under the Apache Software License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0.

AspNetCoreRateLimit - ASP.NET Core rate limiting middleware

  •    CSharp

AspNetCoreRateLimit is an ASP.NET Core rate limiting solution designed to control the rate of requests that clients can make to a Web API or MVC app based on IP address or client ID. The AspNetCoreRateLimit package contains an IpRateLimitMiddleware and a ClientRateLimitMiddleware, with each middleware you can set multiple limits for different scenarios like allowing an IP or Client to make a maximum number of calls in a time interval like per second, 15 minutes, etc. You can define these limits to address all requests made to an API or you can scope the limits to each API URL or HTTP verb and path.

express-limiter - Rate limiting middleware for Express

  •    Javascript

rate limiter middleware for express applications

golimit - Golimit is Uber ringpop based distributed and decentralized rate limiter

  •    Go

Golimit is Uber ringpop based distributed and decentralized rate limiter. It is horizontally scalable and is based on shared nothing architecture. Every node in system is capable of handling read and writes of counters. It is designed to offer sub milliseconds latency to caller application. Recommended deployment topology is sidecar model. Every golimit node keeps local and global counter for api counter and local value is synchronized with other nodes on configurable periodic interval or at defined threshold. Http server provides http interface to increment counter against any arbitrary Key string. It also exposes admin api to manage global configurations.

Laravel-Throttle - A rate limiter for Laravel 5

  •    PHP

Laravel Throttle was created by, and is maintained by Graham Campbell, and is a rate limiter for Laravel 5. Feel free to check out the change log, releases, license, and contribution guidelines. Laravel Throttle requires PHP 7.1 or 7.2. This particular version supports Laravel 5.5 - 5.7 only.

node-ratelimiter - Abstract rate limiter for nodejs

  •    Javascript

Rate limiter for Node.js backed by Redis.v3.0.2 - #33 by @promag - Use sorted set to limit with moving window.

Kong - The Microservice API Gateway

  •    Lua

Kong is a cloud-native, fast, scalable, and distributed Microservice Abstraction Layer (also known as an API Gateway, API Middleware or in some cases Service Mesh). Backed by the battle-tested NGINX with a focus on high performance, Kong was made available as an open-source platform in 2015. Under active development, Kong is used in production at thousands of organizations from startups, Global 5000 and Government organizations.

redis-throttle - Rack middleware for rate-limiting incoming HTTP requests configured to be used with Redis

  •    Ruby

This is a fork of the Rack Throttle middleware that provides logic for rate-limiting incoming HTTP requests to Rack applications using Redis as storage system. You can use Rack::RedisThrottle with any Ruby web framework based on Rack, including Ruby on Rails 3.0 and Sinatra. This gem was designed to experiment rate limit with Rails 3.x and Doorkeeper. Redis Throttle Middleware come to life thanks to the work I've made in Lelylan, an open source microservices architecture for the Internet of Things. If this project helped you in any way, think about giving us a star on Github.

limiter - limiter

  •    Ruby

Rack middleware for rate-limiting incoming HTTP requests with black_list and white_list support.

requests-respectful - Minimalist Requests wrapper to work within rate limits of any amount of services simultaneously

  •    Python

If you know Python, you know Requests. Requests is love. Requests is life. Depending on your use cases, you may come across scenarios where you need to use Requests a lot. Services you consume may have rate-limiting policies in place or you may just happen to be in a good mood and feel like being a good Netizen. This is where requests-respectful can come in handy. The library auto-detects the presence of a YAML file named requests-respectful.config.yml at the root of your project and will attempt to load configuration values from it.

Resilience4j - Fault tolerance library designed for Java8 and functional programming

  •    Java

Resilience4j is a lightweight fault tolerance library inspired by Netflix Hystrix, but designed for Java 8 and functional programming. Resilience4j provides higher-order functions (decorators) to enhance any functional interface, lambda expression or method reference with a Circuit Breaker, Rate Limiter, Retry or Bulkhead. You can stack more than one decorator on any functional interface, lambda expression or method reference. The advantage is that you have the choice to select the decorators you need and nothing else.

slidingwindow - Golang implementation of Sliding Window Algorithm for distributed rate limiting.

  •    Go

Golang implementation of Sliding Window Algorithm for distributed rate limiting. slidingwindow is an implementation of the scalable rate limiting algorithm used by Kong.

express-rate-limit - Basic rate-limiting middleware for express

  •    Javascript

Basic rate-limiting middleware for Express. Use to limit repeated requests to public APIs and/or endpoints such as password reset. Note: this module does not share state with other processes/servers by default. If you need a more robust solution, I recommend using an addon store or trying out one of the excelent competing options.






We have large collection of open source products. Follow the tags from Tag Cloud >>


Open source products are scattered around the web. Please provide information about the open source projects you own / you use. Add Projects.