Skip to main content

Django Tocken Bucket support.

Project description

A token bucket implementation for Django to implement rate limiting on individual user actions, for example submitting a form.

Installation

Insatall:

pip install django-token-bucket

add it to your installed apps:

INSTALLED_APPS = [
    '...',
    'django_token_bucket'
]

run migrations:

./manage.py migrate django_token_bucket

Examples

example for consuming a token on Form validation:

INVITATION_MAX_TOKENS = 5
INVITATION_FILL_RATE = 300  # a token each 300 seconds

def clean(self):
    cleaned_data = super(InvitationForm, self).clean()
    bucket = TokenBucket.get(identifier='invitations_sent',
                       ref_object=self.user,
                       max_tokens=INVITATION_MAX_TOKENS,
                       fill_rate=INVITATION_FILL_RATE,
                       whatfor='invitations')
    try:
        bucket.consume(1)
    except bucket.TokensExceeded as e:
        raise forms.ValidationError(e.get_message())
    return cleaned_data

the TokensExceeded.get_message function takes the Timezone to give the retry time in as optional parameter.

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

django_token_bucket-0.2.4.tar.gz (6.3 kB view hashes)

Uploaded Source

Built Distribution

django_token_bucket-0.2.4-py3-none-any.whl (7.8 kB view hashes)

Uploaded Python 3

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