Asenkron bağlamda senkron ORM (ARCH2043)
Anahtar python.async.sync-orm-in-async · Önem warning · Kategori async
Bir async coroutine içinde senkron ORM/DB çağrısı (Django ORM, SQLAlchemy senkron Session) yapmak event loop’u bloklar ve tüm eşzamanlılığı durdurur. Asenkron sürücü veya thread’e devretme gerekir.
Hatalı
Bölüm başlığı “Hatalı”async def get_user(user_id): return User.objects.get(id=user_id) # senkron ORM, loop'u bloklarfrom asgiref.sync import sync_to_async
async def get_user(user_id): return await sync_to_async(User.objects.get)(id=user_id)Düzeltme
Bölüm başlığı “Düzeltme”Asenkron ORM API’sini kullanın ya da senkron çağrıyı sync_to_async/executor ile loop dışına taşıyın.