Async for python timeout

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()
  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.

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()
  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.

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.

Подробности проекта

Ссылки проекта

Источник

Читайте также:  How to create matrix in python
Оцените статью