Python Glossary English

Python 3.11+Асинхронное программированиефункция

asyncio.timeout_at()

тайм-ауты

Как asyncio.timeout(), но принимает абсолютный момент по часам цикла событий, а не длительность.

Синтаксис

async with asyncio.timeout_at(when): ...

Момент считается по loop.time() — монотонным часам цикла, а не по time.time(): передать сюда отметку Unix-времени значит получить срок через десятки лет или уже истёкший. Удобна, когда один дедлайн делят несколько шагов: вычислили deadline = loop.time() + 5 один раз и передаёте его дальше. Появилась в 3.11.

Примеры

import asyncio
async def main():
    loop = asyncio.get_running_loop()
    deadline = loop.time() + 0.02  # часы цикла, не time.time()
    try:
        async with asyncio.timeout_at(deadline):
            await asyncio.sleep(0.01)
            print('шаг 1')
            await asyncio.sleep(1)
    except TimeoutError:
        print('дедлайн')
asyncio.run(main())  # → шаг 1 / дедлайн

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности