Skip to main content

Rate limiting for callable functions

Project description

license

Function-Limiter provides rate limiting features to callable function.

Installation

pip install Flask-Limiter

Quick Start

Add the rate limiter to your function as decorator. The following example uses the default in memory implementation for storage.

The decorators made available as instance methods of the Limiter instance are Limiter.

from function_limiter.limiter import Limiter
from function_limiter.limiter import RateLimitExceeded
import time

limiter = Limiter()


@limiter.limit('3/second', 'key')
def function():
    print('hello world!')
from function_limiter.limiter import Limiter
from function_limiter.limiter import RateLimitExceeded
import time

storage_uri = 'redis://ip:port/'
limiter = Limiter(
        storage_uri=storage_uri
    )

There are a few ways of using this decorator depending on your preference and use-case.

Single decorator

The limit string can be a single limit or a delimiter separated string

@limiter.limit('3/second;10 per minute', 'key')
def function():
    print('hello world!')

Multiple decorators

The limit string can be a single limit or a delimiter separated string or a combination of both.

@limiter.limit('3/second', 'key')
@limiter.limit('10 per minute', 'key')
def function():
    print('hello world!')

Custom keying function

By default rate limits are applied based on the key function that the Limiter instance was initialized with. You can implement your own function to retrieve the key to rate limit by when decorating individual routes. Take a look at Rate Limit Key Functions for some examples.

def limitation():
    return '5/second'

def key():
    return 'custom key'

@limiter.limit(limitation, key=key)
def function():
    print('hello world!')

Changelog

v0.0.9

Release Date: 2021-01-28
  • Rate limit policy changed to successful call.

  • Bug Fixed:
    • Multiple limit doesn’t work.

v0.0.8

Release Date: 2021-01-17
  • Bug Fixed:
    • Null key bugs Fixed.

v0.0.7

Release Date: 2021-01-17
  • Bug Fixed.

v0.0.6

Release Date: 2021-01-16
  • Added redis as in memory storage.

v0.0.5

Release Date: 2021-01-16
  • Added garbage collector.

v0.0.4

Release Date: 2021-01-16
  • Added Validator to limiter.

v0.0.3

Release Date: 2021-01-14
  • Added callable function for limitation and key function.

v0.0.2

Release Date: 2021-01-14
  • Bug fixed.

v0.0.1

Release Date: 2021-01-13
  • Basic Function Limiter.

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

Function-Limiter-0.0.9.1.tar.gz (20.6 kB view hashes)

Uploaded Source

Built Distribution

Function_Limiter-0.0.9.1-py3-none-any.whl (5.4 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