Skip to main content

Super naive python redis limiter

Project description

python version Build Status codecov PyPI version

python redis backed limiter

sliding log or fixed window limiter

This module mainly offer two limiter

  • FixedWindowLimiter
    simply using redis incr, which about 10 times the speed of the sliding version but the limit is not smooth, may overflow a threshold size near the gap between two intervals
  • SlidingWindowLimiter  
    using redis ordered set, slow but offers more smooth limit and more extendability

installation

pip install python-throttle

dummy example usage:

reminder: use name_space to avoid possible conflict on the same key

import time
from limiter import FixedWindowLimiter
TEST_REDIS_CONFIG = {'host': 'localhost','port': 6379,'db': 10}
ip = "who are you?"
throttle = FixedWindowLimiter(threshold=2, interval=3, redis_config=TEST_REDIS_CONFIG, name_space="default")
print("first time, blocked?: {}".format(throttle.exceeded(ip)))
print("second time, blocked?: {}".format(throttle.exceeded(ip)))
print("now I block you, blocked?: {}".format(throttle.exceeded(ip)))
time.sleep(3)
print("refill energy, blocked?: {}".format(throttle.exceeded(ip)))

ouput:

first time blocked?: False
second time blocked?: False
now I block you blocked?: True
refill energy blocked?: False

dummy beach mark

It is from my unittest and not accurate,

rate_counter_pressure_test: SlidingRedisCounter
rate_counter_pressure_test: SlidingRedisCounter time count: 1.0075314449495636
rate_counter_pressure_test: FixedWindowRedisCounter
rate_counter_pressure_test: FixedWindowRedisCounter time count: 0.13711917598266155

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python-throttle-0.2.0.tar.gz (4.9 kB view details)

Uploaded Source

File details

Details for the file python-throttle-0.2.0.tar.gz.

File metadata

  • Download URL: python-throttle-0.2.0.tar.gz
  • Upload date:
  • Size: 4.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.20.1 setuptools/41.0.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.3

File hashes

Hashes for python-throttle-0.2.0.tar.gz
Algorithm Hash digest
SHA256 9fe5016cf0b5db6884b02e9f6923cb6d4864c477af8b751daa3bd686debbff4e
MD5 edf77f9ffd0ffc773c1f5da996127a6b
BLAKE2b-256 1372f6a7ef6cc6c1450c132ff25796ab6240f223b3fb797866cbf8c26f721aa2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page