- slowapi limiter on POST /auth/login (10/min per IP, Persian error msg); edge-level coarse limits stay in Traefik - mem_limit on every main-compose service (~4.4GB worst case, protects the 8GB shared host during rebuilds) - monitoring images pinned to verified tags (prom v3.4.1, grafana 11.6.3, loki/promtail 3.5.0, node-exporter v1.9.1, postgres-exporter v0.17.1, cadvisor v0.49.1); exporter image name fixed to postgres-exporter
12 lines
437 B
Python
12 lines
437 B
Python
"""Shared rate limiter (slowapi) — in-memory, single-worker friendly.
|
|
|
|
Login brute-force brake: the edge (Traefik) has a coarse per-IP limit for
|
|
the whole API host; this adds a tight limit on the credential endpoint
|
|
itself. Kept in its own module so routers can import it without a circular
|
|
import on app.main.
|
|
"""
|
|
from slowapi import Limiter
|
|
from slowapi.util import get_remote_address
|
|
|
|
limiter = Limiter(key_func=get_remote_address)
|