p-limit - Run multiple promise-returning & async functions with limited concurrency

  •        10

Run multiple promise-returning & async functions with limited concurrency




Related Projects

throat - Throttle a collection of promise returning functions

  •    Javascript

Throttle the parallelism of an asynchronous, promise returning, function / functions. This has special utility when you set the concurrency to 1. That way you get a mutually exclusive lock. This returns a function that acts a bit like a lock (exactly as a lock if concurrency is 1).


  •    Javascript

Promise-mysql is a wrapper for mysqljs/mysql that wraps function calls with Bluebird promises. Usually this would be done with Bluebird's .promisifyAll() method, but mysqljs/mysql's footprint is different to that of what Bluebird expects. At the minute only the standard connection (using .createConnection()) and the pool (using .createPool()) is supported. createPoolCluster is not implemented yet.

ratelimit - Go/gRPC service designed to enable generic rate limit scenarios from different types of applications

  •    Go

The rate limit service is a Go/gRPC service designed to enable generic rate limit scenarios from different types of applications. Applications request a rate limit decision based on a domain and a set of descriptors. The service reads the configuration from disk via runtime, composes a cache key, and talks to the Redis cache. A decision is then returned to the caller. Envoy's data-plane-api defines a ratelimit service proto rls.proto. Logically the data-plane-api rls is equivalent to the ratelimit.proto defined in this repo. However, due to the namespace differences and how gRPC routing works it is not possible to transparently route the legacy ratelimit (ones based in the ratelimit.proto defined in this repo) requests to the data-plane-api definitions. Therefore, the ratelimit service will upgrade the requests, process them internally as it would process a data-plane-api ratelimit request, and then downgrade the response to send back to the client. This means that, for a slight performance hit for clients using the legacy proto, ratelimit is backwards compatible with the legacy proto.

promise-fun - Promise packages, patterns, chat, and tutorials


I intend to use this space to document my promise modules, useful promise patterns, and how to solve common problems. For now though, you can see all my promise modules below.Star this repo to show your interest, so I can know whether to prioritize this work.

p-progress - Create a promise that reports progress

  •    Javascript

Useful for reporting progress to the user during long-running async operations.Same as the Promise constructor, but with an appended progress parameter in executor.

deferred - Modular and fast Promises implementation for JavaScript

  •    Javascript

Deferred is complete, one of the fastest and natural promise implementation in JavaScript, with Deferred you can write clear maintainable code that takes maximum out of asynchronicity, in fact due to multi-dimensional nature of promises (chaining and nesting) you're forced to program declaratively. With Deferred you also can: Process collections of deferred calls. Handle Node.js asynchronous functions. Limit concurrency of scheduled tasks. Emit progress events or stream results partially on the go.

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.

bottleneck - Task scheduler and rate limiter

  •    Javascript

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.

queue - Asynchronous function queue with adjustable concurrency

  •    Javascript

Asynchronous function queue with adjustable concurrency. This module exports a class Queue that implements most of the Array API. Pass async functions (ones that accept a callback or return a promise) to an instance's additive array methods. Processing begins when you call q.start().

Sharq Server - A flexible rate limited queueing system

  •    Python

SHARQ is a flexible, open source, rate limited queuing system. Based on the Leaky Bucket Algorithm, SHARQ lets you create queues dynamically and update their rate limits in real time. SHARQ consists of two components - the core component and the server component. The SHARQ core is built on Redis, using Python and Lua, and the SHARQ Server is built using Flask and Gevent and talks HTTP.

Awaity.js - A functional, lightweight alternative to bluebird.js, built with async / await in mind.

  •    Javascript

A functional, lightweight alternative to bluebird.js, built with async / await in mind. Functional utility library for async / await Think lodash for promises.

ratelimit - A Golang blocking leaky-bucket rate limit implementation

  •    Go

This package provides a Golang implementation of the leaky-bucket rate limit algorithm. This implementation refills the bucket based on the time elapsed between requests instead of requiring an interval clock to fill the bucket discretely.Create a rate limiter with a maximum number of operations to perform per second. Call Take() before each operation. Take will sleep until you can continue.

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.

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.