Skip to main content

travis-ci coveralls pypi license

Flask-Limiter provides rate limiting features to flask routes. It has support for a configurable backend for storage with current implementations for in-memory, redis and memcache.

Quickstart

Add the rate limiter to your flask app. The following example uses the default in memory implementation for storage.

from flask import Flask
from flask_limiter import Limiter

app = Flask(__name__)
limiter = Limiter(app, global_limits=["2 per minute", "1 per second"])

@app.route("/slow")
@limiter.limit("1 per day")
def slow():
    return "24"

@app.route("/fast")
def fast():
    return "42"

@app.route("/ping")
@limiter.exempt
def ping():
    return 'PONG'

app.run()

Test it out. The fast endpoint respects the global rate limit while the slow endpoint uses the decorated one. ping has no rate limit associated with it.

$ curl localhost:5000/fast
42
$ curl localhost:5000/fast
42
$ curl localhost:5000/fast
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>429 Too Many Requests</title>
<h1>Too Many Requests</h1>
<p>2 per 1 minute</p>
$ curl localhost:5000/slow
24
$ curl localhost:5000/slow
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>429 Too Many Requests</title>
<h1>Too Many Requests</h1>
<p>1 per 1 day</p>
$ curl localhost:5000/ping
PONG
$ curl localhost:5000/ping
PONG
$ curl localhost:5000/ping
PONG
$ curl localhost:5000/ping
PONG

Read the docs

Changelog

0.6.2 2014-07-13

0.6.1 2014-07-11

  • per http method rate limit separation (Recipe)

  • documentation improvements

0.6 2014-06-24

0.5 2014-06-13

0.4.4 2014-06-13

  • Bug fix

    • Werkzeug < 0.9 Compatibility (Issue 6.)

0.4.3 2014-06-12

  • Hotfix : use HTTPException instead of abort to play well with other extensions.

0.4.2 2014-06-12

  • Allow configuration overrides via extension constructor

0.4.1 2014-06-04

  • Improved implementation of moving-window X-RateLimit-Reset value.

0.4 2014-05-28

0.3.2 2014-05-26

  • Bug fix

    • Memory leak when using Limiter.storage.MemoryStorage (Issue 4.)

  • Improved test coverage

0.3.1 2014-02-20

  • Strict version requirement on six

  • documentation tweaks

0.3.0 2014-02-19

  • improved logging support for multiple handlers

  • allow callables to be passed to Limiter.limit decorator to dynamically load rate limit strings.

  • add a global kill switch in flask config for all rate limits.

  • Bug fixes

    • default key function for rate limit domain wasn’t accounting for X-Forwarded-For header.

0.2.2 2014-02-18

  • add new decorator to exempt routes from limiting.

  • Bug fixes

    • versioneer.py wasn’t included in manifest.

    • configuration string for strategy was out of sync with docs.

0.2.1 2014-02-15

  • python 2.6 support via counter backport

  • source docs.

0.2 2014-02-15

  • Implemented configurable strategies for rate limiting.

  • Bug fixes

    • better locking for in-memory storage

    • multi threading support for memcached storage

0.1.1 2014-02-14

  • Bug fixes

    • fix initializing the extension without an app

    • don’t rate limit static files

0.1.0 2014-02-13

  • first release.

Download files

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

Source Distribution

Flask-Limiter-0.6.2.tar.gz (85.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

Flask_Limiter-0.6.2-py2.7.egg (59.3 kB view details)

Uploaded Egg

File details

Details for the file Flask-Limiter-0.6.2.tar.gz.

File metadata

  • Download URL: Flask-Limiter-0.6.2.tar.gz
  • Upload date:
  • Size: 85.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for Flask-Limiter-0.6.2.tar.gz
Algorithm Hash digest
SHA256 76a11ddf972e51154ae18d1b6cb54682dadf6876910003a786c7b0860d5b2086
MD5 294ca1ec5c7f5c92faf8b9b6c25efb03
BLAKE2b-256 6639ab1a0f6b3b90ddaa148c54a04e8a5c709c51d170d9c3e6447c36c2a5778d

See more details on using hashes here.

File details

Details for the file Flask_Limiter-0.6.2-py2.7.egg.

File metadata

File hashes

Hashes for Flask_Limiter-0.6.2-py2.7.egg
Algorithm Hash digest
SHA256 684cfcdc275b919cc8a2215d1886cc2effd4ea7d7d59708e3b58152cb51f796f
MD5 0a9af60519e0d3edffd87519d48ed747
BLAKE2b-256 c6282788344f6343e7e5c276dbb4014d23630f042b1fc7687e0c7c1550eae8d6

See more details on using hashes here.

Release history Release notifications | RSS feed

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page