- Saved searches
- Use saved searches to filter your results more quickly
- License
- aio-libs/async-timeout
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.rst
- About
- async-timeout 4.0.2
- Installation
- Authors and License
- Подробности проекта
- Ссылки проекта
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
asyncio-compatible timeout class
License
aio-libs/async-timeout
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.2.0 to 7.2.1. — [Release notes](https://github.com/pytest-dev/pytest/releases) — [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) — [Commits](pytest-dev/pytest@7.2.0. 7.2.1) — updated-dependencies: — dependency-name: pytest dependency-type: direct:production update-type: version-update:semver-patch . Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot]
Git stats
Files
Failed to load latest commit information.
README.rst
asyncio-compatible timeout context manager.
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(delay, *, loop=None) call returns a context manager that cancels a block on timeout expiring:
async with timeout(1.5): await inner()
- If inner() is executed faster than in 1.5 seconds nothing happens.
- 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.
Alternatively, timeout_at(when) can be used for scheduling at the absolute time:
loop = asyncio.get_event_loop() now = loop.time() async with timeout_at(now + 1.5): await inner()
Please note: it is not POSIX time but a time with undefined starting base, e.g. the time of the system power on.
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 .
The scheduled deadline time is available as .deadline property:
async with timeout(1.5) as cm: cm.deadline
Not finished yet timeout can be rescheduled by shift_by() or shift_to() methods:
async with timeout(1.5) as cm: cm.shift(1) # add another second on waiting cm.update(loop.time() + 5) # reschedule to now+5 seconds
Rescheduling is forbidden if the timeout is expired or after exit from async with code block.
The library is Python 3 only!
The module is written by Andrew Svetlov.
It’s Apache 2 licensed and freely available.
About
asyncio-compatible timeout class
async-timeout 4.0.2
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(delay, *, loop=None) call returns a context manager that cancels a block on timeout expiring:
async with timeout(1.5): await inner()
- If inner() is executed faster than in 1.5 seconds nothing happens.
- 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.
Alternatively, timeout_at(when) can be used for scheduling at the absolute time:
loop = asyncio.get_event_loop() now = loop.time() async with timeout_at(now + 1.5): await inner()
Please note: it is not POSIX time but a time with undefined starting base, e.g. the time of the system power on.
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 .
The scheduled deadline time is available as .deadline property:
async with timeout(1.5) as cm: cm.deadline
Not finished yet timeout can be rescheduled by shift_by() or shift_to() methods:
async with timeout(1.5) as cm: cm.shift(1) # add another second on waiting cm.update(loop.time() + 5) # reschedule to now+5 seconds
Rescheduling is forbidden if the timeout is expired or after exit from async with code block.
Installation
The library is Python 3 only!
Authors and License
The module is written by Andrew Svetlov.
It’s Apache 2 licensed and freely available.