API & Backend
FastAPI Async Mimarisi: Asyncio Event Loop ve Yüksek Eşzamanlılık (Concurrency)
FastAPI'de async def ve def fonksiyonlarının nasıl çalıştığını, threadpool tuzaklarını ve saniyede on binlerce isteği bloklanmadan yönetme tekniklerini öğrenin.
3 dk
async def vs def: En Yaygın Hata
Birçok geliştirici FastAPI'de her endpoint'in başına düşünmeden `async def` yazar. Eğer fonksiyon içinde bloklayıcı bir işlem (örneğin `time.sleep` veya senkron `requests.get`) yaparsanız, asyncio Event Loop kilitlenir ve tüm sunucu donar.
FastAPI, senkron `def` fonksiyonlarını otomatik olarak harici bir AnyIO Threadpool üzerinde çalıştırarak Event Loop'u korur.
concurrency_example.py
import httpx
from fastapi import FastAPI
app = FastAPI()
# DOĞRU: Asenkron non-blocking HTTP isteği
@app.get("/async-fetch")
async def async_fetch():
async with httpx.AsyncClient() as client:
res = await client.get("https://api.example.com/data")
return res.json()
# DOĞRU: Senkron CPU-heavy veya bloklayıcı işlem (FastAPI threadpool'a atar)
@app.get("/sync-compute")
def sync_compute():
import time
time.sleep(1) # Threadpool'da çalışır, Event Loop'u kilitlemez
return {"status": "ok"}Sıkça Sorulan Sorular
uvloop nedir ve FastAPI'yi nasıl hızlandırır?
uvloop, Node.js libuv üzerine yazılmış ultra hızlı bir asyncio event loop kütüphanesidir ve FastAPI performansını 2 ila 4 kat artırır.