Python Glossary English

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Сообщить о неточности