A simple ratelimiter for aiohttp.web
Project description
aiohttp-ratelimiter
This library allows you to add a rate limit to your aiohttp.web app.
Install from git
python -m pip install git+https://github.com/Nebulizer1213/aiohttp-ratelimiter
Install from pypi
python -m pip install aiohttp-ratelimiter
Example
from aiohttplimiter import limit, default_keyfunc
from aiohttp import web
app = web.Application()
routes = web.RouteTableDef()
# This endpoint can only be requested one time per second per IP address.
@routes.get("/")
@limit(ratelimit="1/1", keyfunc=default_keyfunc)
async def test(request):
return web.Response(text="test")
app.add_routes(routes)
web.run_app(app)
You can exempt an IP from ratelimiting using the exempt_ips kwarg.
from aiohttplimiter import limit, default_keyfunc
from aiohttp import web
app = web.Application()
routes = web.RouteTableDef()
# 192.168.1.245 is exempt from ratelimiting.
# Keep in mind that exempt_ips takes a set not a list.
@routes.get("/")
@limit(ratelimit="1/1", keyfunc=default_keyfunc, exempt_ips={"192.168.1.245"})
async def test(request):
return web.Response(text="test")
app.add_routes(routes)
web.run_app(app)
If you plan on having the same keyfunc and exempt IPs for each endpoint using the Limiter class would be easier.
from aiohttp import web
from aiohttplimiter import default_keyfunc, Limiter
app = web.Application()
routes = web.RouteTableDef()
limiter = Limiter(keyfunc=default_keyfunc, exempt_ips={"192.168.1.235"})
@routes.get("/")
@limiter.limit("1/5")
def home(request):
return web.Response(text="test")
app.add_routes(routes)
web.run_app(app)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Close
Hashes for aiohttp-ratelimiter-2.0.6.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 244755c2febe82469eb35da81533a8404901112e782ca071448f593db073ae53 |
|
MD5 | 3501f2b715cd4210c58b04dfcfb67d5f |
|
BLAKE2b-256 | 2827eaf466b165b41f30c82cd83a703ae442b5e5a69d76b72695706878f3dd4c |