İçeriğe geç

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.

async def get_user(user_id):
return User.objects.get(id=user_id) # senkron ORM, loop'u bloklar
from asgiref.sync import sync_to_async
async def get_user(user_id):
return await sync_to_async(User.objects.get)(id=user_id)

Asenkron ORM API’sini kullanın ya da senkron çağrıyı sync_to_async/executor ile loop dışına taşıyın.