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.