███████╗ █████╗ ███████╗████████╗ █████╗ ██████╗ ██╗ ██╗ ██╗██████╗ ██████╗
██╔════╝██╔══██╗██╔════╝╚══██╔══╝██╔══██╗██╔══██╗██║ ██║ ██║╚════██╗██╔═████╗
█████╗ ███████║███████╗ ██║ ███████║██████╔╝██║ ███████║ █████╔╝██║██╔██║
██╔══╝ ██╔══██║╚════██║ ██║ ██╔══██║██╔═══╝ ██║ ╚════██║██╔═══╝ ████╔╝██║
██║ ██║ ██║███████║ ██║ ██║ ██║██║ ██║ ██║███████╗╚██████╔╝
╚═╝ ╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝╚══════╝ ╚═════╝
Production rate limiting for FastAPI using HTTP 420 "Enhance Your Calm".
This is a quick overview — security theory, architecture, and full walkthroughs are in the learn modules.
What It Does
- Three implementation methods: middleware (global), decorator (per route), dependency injection
- Sliding Window, Token Bucket, and Fixed Window rate limiting algorithms
- Redis support with automatic in-memory fallback when Redis is unavailable
- Scoped rate limiters for applying different limits to endpoint groups
- Fingerprint levels (RELAXED, NORMAL, STRICT) for client identification granularity
- Multiple stacking rules where the most restrictive limit applies
Quick Start
uv add fastapi-420
from fastapi import FastAPI
from fastapi_420 import RateLimiter, RateLimiterSettings
app = FastAPI()
limiter = RateLimiter(RateLimiterSettings(default_limit="100/minute"))
app.add_middleware(limiter.middleware)
For Redis support: uv add fastapi-420[redis]
[!TIP] This project uses
justas a command runner. Typejustto see all available commands.Install:
curl -sSf https://just.systems/install.sh | bash -s -- --to ~/.local/bin
Learn
This project includes step-by-step learning materials covering security theory, architecture, and implementation.
| Module | Topic |
|---|---|
| 00 - Overview | Prerequisites and quick start |
| 01 - Concepts | Security theory and real-world breaches |
| 02 - Architecture | System design and data flow |
| 03 - Implementation | Code walkthrough |
| 04 - Challenges | Extension ideas and exercises |
License
AGPL 3.0
Metadata
Release files for fastapi-420 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| fastapi_420-1.0.1.tar.gz | 161.8 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fastapi_420-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 212.4 kB
Release files / fastapi_420-1.0.1.tar.gz
| Download URL | fastapi_420-1.0.1.tar.gz |
|---|---|
| Size | 161.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
39def7702248018edff86f2b82cf7006277f85346ff8f01448518089642dbbac
|
|
BLAKE2b-256 checksum How to use checksums |
10b49fee3869209afb0a5c394cc0f1dbb32888c887ed632d500e4587d39c6e9e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 11, 2026.
Transparency logRelease files / fastapi_420-1.0.1-py3-none-any.whl
| Download URL | fastapi_420-1.0.1-py3-none-any.whl |
|---|---|
| Size | 50.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1d0e36cfc531214d7d7588fcae2851bdfcb35005d310cd6bf6fd2750fac059bb
|
|
BLAKE2b-256 checksum How to use checksums |
f673a40a8fb154fb5968739ac04baeb29bd1924cfba0c5ce698902e48681e402
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 11, 2026.
Transparency logSecurity for fastapi-420 1.0.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for fastapi_420-1.0.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 11, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.