Skip to main content

Celery Timeout decorator

Project description

Process Timer

Installation

From source code:

python setup.py install

From pypi:

pip install process-timer

Usage

    import time
    from process_timer import timeout

    @timeout(5)
    def mytest():
        print("Start")
        for i in range(1,10):
            time.sleep(1)
            print(f"{i} seconds have passed")

    if __name__ == '__main__':
        mytest()

Specify an alternate exception to raise on timeout:

    import time
    from process_timer import timeout

    @timeout(5, timeout_exception=StopIteration)
    def mytest():
        print("Start")
        for i in range(1,10):
            time.sleep(1)
            print(f"{i} seconds have passed")

    if __name__ == '__main__':
        mytest()

Multithreading

By default, timeout-decorator uses signals to limit the execution time of the given function. This appoach does not work if your function is executed not in a main thread (for example if it's a worker thread of the web application). There is alternative timeout strategy for this case - by using multiprocessing. To use it, just pass use_signals=False to the timeout decorator function:

    import time
    from process_timer import timeout

    @timeout(5, use_signals=False)
    def mytest():
        print("Start")
        for i in range(1,10):
            time.sleep(1)
            print(f"{i} seconds have passed")

    if __name__ == '__main__':
        mytest()

Warning Make sure that in case of multiprocessing strategy for timeout, your function does not return objects which cannot be pickled, otherwise it will fail at marshalling it between master and child processes.

Acknowledgement

    Timeout Decorator - https://github.com/pnpnpn/timeout-decorator
    http://www.saltycrane.com/blog/2010/04/using-python-timeout-decorator-uploading-s3/
    https://code.google.com/p/verse-quiz/source/browse/trunk/timeout.py

Contribute

I would love for you to fork and send me pull request for this project. Please contribute.

License

This software is licensed under the MIT license

See License file

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

process-timer-1.1.1.tar.gz (4.4 kB view details)

Uploaded Source

Built Distribution

process_timer-1.1.1-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

Details for the file process-timer-1.1.1.tar.gz.

File metadata

  • Download URL: process-timer-1.1.1.tar.gz
  • Upload date:
  • Size: 4.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.1.0 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.6.8

File hashes

Hashes for process-timer-1.1.1.tar.gz
Algorithm Hash digest
SHA256 f903e0a0c212ee4580f08fbd038323b1a925c9702df60f1fda918b573638c40f
MD5 292268d8e8e8046a2e2bd380256fcde0
BLAKE2b-256 56b249371c8102ad77f1d3fcc38e69e44d746abcc0a87c20f2d785a513719119

See more details on using hashes here.

File details

Details for the file process_timer-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: process_timer-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 5.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.1.0 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.6.8

File hashes

Hashes for process_timer-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 24199f6a2cf61de93b24435f9aa1f408cb494165a67a77724441a0de51aef408
MD5 cb2757f44b9563c033a0c2419fcf6287
BLAKE2b-256 dad4c68545e7cec06bad5141387212c067316845ab03cde23d66c41f41b42575

See more details on using hashes here.

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