Skip to content
asyncio-compatible timeout class
Python Makefile
Branch: master
Clone or download
dependabot-preview Bump pytest from 5.1.1 to 5.1.2
Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.1.1 to 5.1.2.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
- [Commits](pytest-dev/pytest@5.1.1...5.1.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
Latest commit a863eaf Sep 2, 2019

README.rst

async-timeout

https://travis-ci.com/aio-libs/async-timeout.svg?branch=master Chat on Gitter

asyncio-compatible timeout context manager.

Usage example

The context manager is useful in cases when you want to apply timeout logic around block of code or in cases when asyncio.wait_for() is not suitable. Also it's much faster than asyncio.wait_for() because timeout doesn't create a new task.

The timeout(timeout, *, loop=None) call returns a context manager that cancels a block on timeout expiring:

async with timeout(1.5):
    await inner()
  1. If inner() is executed faster than in 1.5 seconds nothing happens.
  2. Otherwise inner() is cancelled internally by sending asyncio.CancelledError into but asyncio.TimeoutError is raised outside of context manager scope.

timeout parameter could be None for skipping timeout functionality.

Context manager has .expired property for check if timeout happens exactly in context manager:

async with timeout(1.5) as cm:
    await inner()
print(cm.expired)

The property is True if inner() execution is cancelled by timeout context manager.

If inner() call explicitly raises TimeoutError cm.expired is False.

Installation

$ pip install async-timeout

The library is Python 3 only!

Authors and License

The module is written by Andrew Svetlov.

It's Apache 2 licensed and freely available.

You can’t perform that action at this time.