This document describes the current stable version of Kombu (5.3). For development docs, go here.

Rate limiting - kombu.utils.limits

Token bucket implementation for rate limiting.

class kombu.utils.limits.TokenBucket(fill_rate, capacity=1)[source]

Token Bucket Algorithm.

See also

https

//en.wikipedia.org/wiki/Token_Bucket Most of this code was stolen from an entry in the ASPN Python Cookbook:

https

//code.activestate.com/recipes/511490/

Warning:

Thread Safety: This implementation is not thread safe. Access to a TokenBucket instance should occur within the critical section of any multithreaded code.

add(item)[source]
can_consume(tokens=1)[source]

Check if one or more tokens can be consumed.

Returns:

bool – from the bucket. If they can be consumed, a call will also consume the requested number of tokens from the bucket. Calls will only consume tokens (the number requested) or zero tokens – it will never consume a partial number of tokens.

Return type:

true if the number of tokens can be consumed

capacity = 1

Maximum number of tokens in the bucket.

clear_pending()[source]
expected_time(tokens=1)[source]

Return estimated time of token availability.

Returns:

float

Return type:

the time in seconds.

fill_rate = None

The rate in tokens/second that the bucket will be refilled.

pop()[source]
timestamp = None

Timestamp of the last time a token was taken out of the bucket.