Python 3.4+Асинхронное программированиефункция
asyncio.wait_for()
тайм-ауты
Ждёт awaitable не дольше заданного числа секунд; по истечении отменяет его и бросает TimeoutError.
Синтаксис
result = await asyncio.wait_for(aw, timeout)
В отличие от wait(), wait_for отменяет то, чего ждал, и дожидается завершения отмены, поэтому может задержаться дольше timeout, если задача долго чистит за собой. С 3.11 бросается встроенный TimeoutError (asyncio.TimeoutError стал его псевдонимом), до 3.11 ловить приходилось asyncio.TimeoutError. timeout=None ждёт бесконечно; для блока из нескольких await удобнее async with asyncio.timeout().
Примеры
# Python 3.11+
import asyncio
async def slow():
try:
await asyncio.sleep(1)
except asyncio.CancelledError:
print('отменена')
raise
async def main():
try:
await asyncio.wait_for(slow(), timeout=0.01)
except TimeoutError:
print('не успела')
asyncio.run(main()) # → отменена / не успела
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности