Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

Rate-limiting asynchronous and thread-safe decorators and context managers that implement the token-bucket algorithm.

Project description


Rate-limiting thread-safe and asynchronous decorators and context managers that implement the token-bucket algorithm.

  • Thread-safe, with no need for a timer thread
  • Control burst requests
  • Control average request rate
  • Easy to use



  • Python 3.7+

Installing from PyPI

pip3 install limiter


from asyncio import sleep

from requests import get, Response
from limiter import get_limiter, limit


limiter = get_limiter(rate=REFRESH_RATE, capacity=BURST_RATE)

def get_page(url: str) -> Response:
    return get(url)

@limit(limiter, consume=2)
async def do_stuff():
    await sleep(0.1)

def do_stuff():
    # do stuff

    with limit(limiter, consume=1.5):
        # do expensive stuff

async def do_stuff():
    # do stuff

    async with limit(limiter):
        # do expensive stuff

@limit(limiter, bucket=b'other stuff')
def do_other_stuff():

Project details

Download files

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

Files for limiter, version 0.1.1
Filename, size File type Python version Upload date Hashes
Filename, size limiter-0.1.1-py3.8.egg (5.3 kB) File type Egg Python version 3.8 Upload date Hashes View hashes
Filename, size limiter-0.1.1-py3-none-any.whl (3.7 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size limiter-0.1.1.tar.gz (3.5 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page