Skip to content
This repository has been archived by the owner on Mar 21, 2019. It is now read-only.

rbarrois/throttle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

throttle

The throttle library provides a robust and versatile throttling mechanism for Python.

It can be used in multiple environments, from a single thread to a distributed server cluster.

It supports Python versions 2.6 to 3.3.

Usage

In order to perform throttling tasks, simply use the ~throttle.throttle function:

import throttle

def some_fun(uid):
    if not throttle.check(key=uid, rate=30, size=10):
        raise ThrottleError()
    # Do the job

Algorithm

throttle uses the "token bucket" algorithm: for each key, a virtual bucket exists.

Whenever a new request gets in, the algorithm performs the following actions:

  • Test if adding the request's cost to the bucket would exceed its capacity; in that case, return False
  • Otherwise, add the request's cost to the bucket, and return True

Simultaneously, the bucket's current value is decremented at the chosen rate.

This allows for temporary bursts and average computations.

Installing

From pip (https://pypi.python.org/pypi/throttle):

$ pip install throttle

From Github:

$ git clone git://github.com/rbarrois/throttle.git

About

UNMAINTAINED - A simple Python throttling lib relying on the token bucket algorithm

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages