← retour aux snippets

asyncio.timeout: gérer un délai dans un bloc

Limiter la durée d'une opération avec le context manager asyncio.timeout (3.11+).

python asyncio #asyncio#timeout#context

objectif

Limiter la durée d’une opération avec le context manager asyncio.timeout (3.11+).

code minimal

import asyncio

async def main():
    try:
        async with asyncio.timeout(0.01):
            await asyncio.sleep(0.02)
    except Exception as e:
        print(isinstance(e, TimeoutError))  # attendu: True

asyncio.run(main())

utilisation

import asyncio
async def ok():
    async with asyncio.timeout(0.1):
        await asyncio.sleep(0.01)
    return True
print(asyncio.run(ok()))

variante(s) utile(s)

import asyncio
try:
    asyncio.run(asyncio.wait_for(asyncio.sleep(0.02), timeout=0.001))
except asyncio.TimeoutError:
    print(True)

notes

  • asyncio.timeout est plus lisible qu’un wait_for imbriqué.
  • Disponible à partir de Python 3.11.