Skip to main content

docs ci codecov pypi license

Flask-Limiter adds rate limiting to Flask applications.

You can configure rate limits at different levels such as:

Flask-Limiter can be configured to fit your application in many ways, including:

  • Persistance to various commonly used storage backends (such as Redis, Memcached & MongoDB) via limits

  • Any rate limiting strategy supported by limits

Follow the quickstart below to get started or read the documentation for more details.

Quickstart

Install

pip install Flask-Limiter

Add the rate limiter to your flask app

# app.py

from flask import Flask
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address

app = Flask(__name__)
limiter = Limiter(
    get_remote_address,
    app=app,
    default_limits=["2 per minute", "1 per second"],
    storage_uri="memory://",
    # Redis
    # storage_uri="redis://localhost:6379",
    # Redis cluster
    # storage_uri="redis+cluster://localhost:7000,localhost:7001,localhost:70002",
    # Memcached
    # storage_uri="memcached://localhost:11211",
    # Memcached Cluster
    # storage_uri="memcached://localhost:11211,localhost:11212,localhost:11213",
    # MongoDB
    # storage_uri="mongodb://localhost:27017",
    strategy="fixed-window", # or "moving-window", or "sliding-window-counter"
)

@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'

Inspect the limits using the command line interface

pip install Flask-Limiter[cli]
$ FLASK_APP=app:app flask limiter limits

app
├── fast: /fast
   ├── 2 per 1 minute
   └── 1 per 1 second
├── ping: /ping
   └── Exempt
└── slow: /slow
    └── 1 per 1 day

Run the app

$ FLASK_APP=app:app flask run

Test it out

The fast endpoint respects the default 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

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-4.1.1.tar.gz (403.2 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-4.1.1-py3-none-any.whl (30.6 kB view details)

Uploaded Python 3

File details

Details for the file flask_limiter-4.1.1.tar.gz.

File metadata

  • Download URL: flask_limiter-4.1.1.tar.gz
  • Upload date:
  • Size: 403.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for flask_limiter-4.1.1.tar.gz
Algorithm Hash digest
SHA256 ca11608fc7eec43dcea606964ca07c3bd4ec1ae89043a0f67f717899a4f48106
MD5 7eaaf14b4afa270eec4ff3671390a792
BLAKE2b-256 4e9871780be5d1afb941219c4b48d241d4e246e3062b017caa4e79c4dc71314c

See more details on using hashes here.

Provenance

The following attestation bundles were made for flask_limiter-4.1.1.tar.gz:

Publisher: main.yml on alisaifee/flask-limiter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file flask_limiter-4.1.1-py3-none-any.whl.

File metadata

  • Download URL: flask_limiter-4.1.1-py3-none-any.whl
  • Upload date:
  • Size: 30.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for flask_limiter-4.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e1ae13e06e6b3e39a4902e7d240b901586b25932c2add7bd5f5eeb4bdc11111b
MD5 b1be03c3cefbca1bf24d01adb9415419
BLAKE2b-256 757c9fe9ffc83be199011bb0c6deb82cdcbc5a355601e380581de9dbc30490dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for flask_limiter-4.1.1-py3-none-any.whl:

Publisher: main.yml on alisaifee/flask-limiter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

4.1.1 This release

2 files

4.1.0

2 files

4.0.0

2 files

3.13

2 files

3.12

2 files

3.11.0

2 files

3.10.1

2 files

3.10.0

2 files

3.9.2

2 files

3.9.0

1 file

3.8.0

2 files

3.7.0

2 files

3.6.0

2 files

3.5.1

2 files

3.5.0

2 files

3.4.1

2 files

3.4.0

2 files

3.3.1

2 files

3.3.0

2 files

3.2.0

2 files

3.1.0

2 files

3.0.0

2 files

2.9.2

2 files

2.9.1

2 files

2.9.0

2 files

2.8.1

2 files

2.8.0

2 files

2.7.0

2 files

2.6.3

2 files

2.6.2

2 files

2.6.1

2 files

2.6.0

2 files

2.5.1

2 files

2.5.0

2 files

2.4.6

2 files

2.4.5.1

2 files

2.4.5

2 files

2.4.4

2 files

2.4.3

2 files

2.4.2

2 files

2.4.1

2 files

2.4.0

2 files

2.3.3

2 files

2.3.2

2 files

2.3.1

2 files

2.3.0

2 files

2.2.0

3 files

2.1.3

3 files

2.1.2

3 files

2.1.1

3 files

2.1

3 files

2.0.4

3 files

2.0.3

3 files

2.0.2

3 files

2.0.1

3 files

2.0.0

3 files

1.5

3 files

1.4

3 files

1.3.1

3 files

1.3

3 files

1.2.1

3 files

1.2.0

3 files

1.1.0

3 files

1.0.1

2 files

1.0.0

2 files

0.9.5.1

2 files

0.9.5

2 files

0.9.4

2 files

0.9.3

2 files

0.9.2

2 files

0.9.1

2 files

0.9

2 files

0.8.5

2 files

0.8.4

2 files

0.8.3

2 files

0.8.2

2 files

0.8.1

2 files

0.8

2 files

0.7.9

2 files

0.7.8

2 files

0.7.7

0.7.6

2 files

0.7.5

2 files

0.7.4

2 files

0.7.3

2 files

0.7.2

0.7.1

2 files

0.7

2 files

0.6.6

2 files

0.6.5

2 files

0.6.4

2 files

0.6.3

2 files

0.6.2

2 files

0.6.1

1 file

0.6

2 files

0.5

2 files

0.4.4

2 files

0.4.3

2 files

0.4.2

2 files

0.4.1

2 files

0.4

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.2

2 files

0.2.1

2 files

0.2

2 files

0.1.1

2 files

0.1.0

2 files

0.0.1

2 files

Supported by

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