Skip to main content

Process based timeout context decorator

Project description

py-timeout

Actions Status PyPI - Status PyPI - Python Version PyPI PyPI - License


py-timeout - pure Python process based decorator that provides execution timeout for Python functions and methods. Since it is not based on signals, py-timeout works fine outside the main thread.

Prerequisites

py-timeout requires python 3.6 or newer versions to run.

Installing

Cloning project from git repository

git clone https://github.com/YADRO-KNS/py-timeout.git

Installing from PyPi

pip3 install py-timeout

Examples

import timeout

@timeout.timeout(duration=0.5)
def foo(value: int) -> None:
    ...

...

@timeout.timeout(duration=0.5)
def bar(self, value: str) -> str:
    ...

Decorated function or method will be executed as a sub-process with expected life-time of passed duration value.

import timeout
import time

@timeout.timeout(duration=5)
def foo() -> None:
    while True:
        time.sleep(1)

try:
    foo()
except timeout.TimeoutException:
    pass

In case if for some reason execution will take longer than expected the process will be terminated and TimeoutException will be raised.

Versioning

We use SemVer for versioning.

Authors

See also the list of contributors who participated in this project.

License

The code is available as open source under the terms of the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py-timeout-0.0.1.tar.gz (4.3 kB view hashes)

Uploaded Source

Built Distribution

py_timeout-0.0.1-py3-none-any.whl (6.5 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page