İçeriğe geç

Asenkron içinde bloklayan çağrı (ARCH2028)

Anahtar python.async.blocking-call-in-async · Önem error · Kategori async

Bir async fonksiyon içinde senkron bloklayan çağrılar (time.sleep, bloklayan IO, senkron HTTP/DB sürücüleri) event loop’u durdurur ve tüm eşzamanlılığı aç bırakır. Asenkron eşdeğerleri kullanılmalıdır.

import time
async def poll():
time.sleep(5) # event loop'u bloklar
return await fetch_status()
import asyncio
async def poll():
await asyncio.sleep(5) # loop'u bloklamaz
return await fetch_status()

Bloklayan çağrıyı asenkron eşdeğeriyle değiştirin veya run_in_executor ile thread havuzuna taşıyın.