All Projects → sigmavirus24 → rush

sigmavirus24 / rush

Licence: MIT license
rush.readthedocs.io/en/latest/

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to rush

adaptive throttler
manages multiple throttlers with ability to ramp up and down
Stars: ✭ 31 (-26.19%)
Mutual labels:  rate-limiting, throttle, rate-limiter, throttler, ratelimit, throttle-requests
zlimiter
A toolkit for rate limite,support memory and redis
Stars: ✭ 17 (-59.52%)
Mutual labels:  rate-limiting, rate-limiter, ratelimit
phalcon-throttler
Phalcon Throttler is a Rate Limiter for the PHP Phalcon Framework.
Stars: ✭ 19 (-54.76%)
Mutual labels:  rate-limiting, rate-limiter, throttler
gentle-force
Brute-force, error and request rate limiting
Stars: ✭ 45 (+7.14%)
Mutual labels:  rate-limiting, rate-limiter
RateLimiting.NET
Rate Limiting (debounce, throttle) for C# Portable Class Library
Stars: ✭ 20 (-52.38%)
Mutual labels:  rate-limiting, throttle
kong-scalable-rate-limiter
Kong plugin for Rate Limiting at high throughputs.
Stars: ✭ 19 (-54.76%)
Mutual labels:  rate-limiting, rate-limiter
Node Rate Limiter Flexible
Node.js rate limit requests by key with atomic increments in single process or distributed environment.
Stars: ✭ 1,950 (+4542.86%)
Mutual labels:  rate-limiting, throttle
limitrr-php
Better PHP rate limiting using Redis.
Stars: ✭ 19 (-54.76%)
Mutual labels:  rate-limiting, rate-limiter
portara-website
Portara dashboard controller to change rate limit settings without redeploying your app
Stars: ✭ 42 (+0%)
Mutual labels:  rate-limiter, throttler
Redis Ratelimit
A fixed window rate limiter based on Redis
Stars: ✭ 15 (-64.29%)
Mutual labels:  rate-limiting, rate-limiter
Gubernator
High Performance Rate Limiting MicroService and Library
Stars: ✭ 609 (+1350%)
Mutual labels:  rate-limiting, rate-limiter
Bucket4j
Java rate limiting library based on token/leaky-bucket algorithm.
Stars: ✭ 1,025 (+2340.48%)
Mutual labels:  rate-limiting, rate-limiter
asyncio-throttle
Simple, easy-to-use throttler for asyncio.
Stars: ✭ 95 (+126.19%)
Mutual labels:  throttle, throttler
php-ratelimiter
A framework independent rate limiter for PHP
Stars: ✭ 59 (+40.48%)
Mutual labels:  rate-limiter, throttler
Hammer
An Elixir rate-limiter with pluggable backends
Stars: ✭ 366 (+771.43%)
Mutual labels:  rate-limiting, rate-limiter
Bottleneck
Job scheduler and rate limiter, supports Clustering
Stars: ✭ 1,113 (+2550%)
Mutual labels:  rate-limiting, rate-limiter
Guzzle Advanced Throttle
A Guzzle middleware that can throttle requests according to (multiple) defined rules. It is also possible to define a caching strategy, e.g. get the response from cache when the rate limit is exceeded or always get a cached value to spare your rate limits. Using wildcards in host names is also supported.
Stars: ✭ 120 (+185.71%)
Mutual labels:  rate-limiting, rate-limiter
lua-resty-limit-rate
Lua module for limiting request rate for OpenResty/ngx_lua, using the "token bucket" method.
Stars: ✭ 64 (+52.38%)
Mutual labels:  ratelimit
resque-waiting-room
Resque plugin that throttles your jobs
Stars: ✭ 34 (-19.05%)
Mutual labels:  rate-limiting
DebounceMonitoring
📑 Add debounce logic for any method in a single line.
Stars: ✭ 44 (+4.76%)
Mutual labels:  throttle

rush: A library for throttles

Build status Test coverage Documentation

This library is a small collection of algorithms that can be reused when throttling user interactions with a resource (e.g., an API).

This library strives to allow any limiter and backing store to be used together without needing to be worried about potential compatibility.

Installation

pip install rush
pipenv install rush

Features

  • A basic periodic interval rate limiter - N accesses per period of time. An example would be the GitHub API that limits authenticated users to 5,000 requests per hour.
  • A leaky bucket rate limiter based off of the Generic Cell Ratelimiting Algorithm (a.k.a, GCRA).
  • A Redis storage backend for rate limit results so that users can have state persisted across machines and application restarts.
  • A in-memory dictionary storage backend for quick prototyping and testing.
  • Type annotations built into the library, verified with mypy, and distributed to users.

Quality

  • 100% test coverage
  • Code auto-formatted by Black (CI will check if formatting wasn't run prior to push)
  • Commit messages following a uniform Kernel-like style
  • Flake8, pylint, mypy, and bandit linting
  • Complete type annotations
  • Complete documentation linted by doclint and strictly compiled by Sphinx

Contributing

  • All contributors are expected to read and follow our Code of Conduct.

  • To reduce the initial friction of submitting a pull request:

    • Please run tox prior to submitting your pull request.
    • After a commit, please run tox -e commitlint.
  • To make it easier to support you, please gather the following information prior to filing an issue:

    • How you installed rush and the versions of its dependencies (if you're using the Redis store, please include rfc3986 and redis version information).
    • What stores and limiters are you using?
    • An example that reproduces your problem
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].