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.