Konuyu Açan
#1
FastAPI Rate Limiting Nasıl Uygulanır?
FastAPI, modern ve yüksek performanslı API geliştirme çerçevesi olmasının yanı sıra, güvenlik ve erişim kontrolü konularında da çeşitli çözümler sunar. Bunlardan biri de rate limiting (oran sınırlaması) uygulamaktır. Bu özellik, özellikle API'ye aşırı istek gönderen kullanıcıların veya botların önüne geçmek ve sistem kaynaklarını korumak amacıyla kullanılır. Peki, FastAPI'de rate limiting nasıl uygulanır?
İlk olarak, FastAPI'nin kendisi doğrudan bu özelliği desteklemediği için üçüncü taraf kütüphanelerden yararlanmak gerekir. En popüler seçeneklerden biri RateLimitMiddleware kütüphanesidir. Bu kütüphane, Flask'daki werkzeug tabanlı rate limiting mantığını FastAPI'ye uyarlamaya olanak tanır.
Kurulum aşaması şu şekildedir:
[list] Öncelikle
Daha sonra, FastAPI uygulamanıza aşağıdaki gibi entegre edebilirsiniz:
Burada,
Alternatif olarak, Redis gibi merkezi bir cache sistemi kullanmak ve rate limitleri ona göre ayarlamak da mümkündür. Bu, özellikle dağıtık yapılar veya yüksek trafikli uygulamalar için daha uygundur.
Son olarak, hız sınırını aşan kullanıcılara uygun yanıtlar vermek ve bu limitleri takip etmek, API güvenliği ve performansı açısından önemli. FastAPI'de bu tür uygulamaları doğru yapılandırmak, API'nizin istikrarını artırabilir ve kötüye kullanımı engelleyebilir.
FastAPI, modern ve yüksek performanslı API geliştirme çerçevesi olmasının yanı sıra, güvenlik ve erişim kontrolü konularında da çeşitli çözümler sunar. Bunlardan biri de rate limiting (oran sınırlaması) uygulamaktır. Bu özellik, özellikle API'ye aşırı istek gönderen kullanıcıların veya botların önüne geçmek ve sistem kaynaklarını korumak amacıyla kullanılır. Peki, FastAPI'de rate limiting nasıl uygulanır?
İlk olarak, FastAPI'nin kendisi doğrudan bu özelliği desteklemediği için üçüncü taraf kütüphanelerden yararlanmak gerekir. En popüler seçeneklerden biri RateLimitMiddleware kütüphanesidir. Bu kütüphane, Flask'daki werkzeug tabanlı rate limiting mantığını FastAPI'ye uyarlamaya olanak tanır.
Kurulum aşaması şu şekildedir:
[list]
slowapi kütüphanesini yüklemek gerekir: KOD
1pip install slowapiKOD
1234567891011121314151617181920212223242526[python]from fastapi import FastAPI, Request
from slowapi import Limiter, _rate_limit_exceeded_handler
from slowapi.middleware import SlowAPIMiddleware
from starlette.responses import JSONResponse
app = FastAPI()
[b]Limiter nesnesi ile limitleri belirliyoruz[/b]
limiter = Limiter(key_func=lambda request: request.client.host)
[b]Middleware ekliyoruz[/b]
app.add_middleware(SlowAPIMiddleware)
app.state.limiter = limiter
app.add_exception_handler(429, _rate_limit_exceeded_handler)
@app.get("/kullanicilar")
@limiter.limit("10/minute") # Dakikada 10 istek limiti
async def kullanicilar():
return {"mesaj": "Kullanıcı listesi"}
@app.get("/toplam")
@limiter.limit("5/hour") # Saatte 5 istek limiti
async def toplam():
return {"mesaj": "Genel toplam"}
[/python]Burada,
limiter.limit ile belirli endpointler için istek sınırı koyuyoruz. Ayrıca, key_func parametresi ile limitin kullanıcıya veya IP'ye göre yapılmasını sağlayabilirsiniz. Bu, API'yi aşırı kullanımdan koruma açısından kritik bir detaydır.Alternatif olarak, Redis gibi merkezi bir cache sistemi kullanmak ve rate limitleri ona göre ayarlamak da mümkündür. Bu, özellikle dağıtık yapılar veya yüksek trafikli uygulamalar için daha uygundur.
Son olarak, hız sınırını aşan kullanıcılara uygun yanıtlar vermek ve bu limitleri takip etmek, API güvenliği ve performansı açısından önemli. FastAPI'de bu tür uygulamaları doğru yapılandırmak, API'nizin istikrarını artırabilir ve kötüye kullanımı engelleyebilir.
