Skip to main content

A streamlined Python utility that enforces timeouts on your Python functions. It features a decorator and a function runner, both with provision for fallback functionality. Keep your code efficient and punctual, maintaining smooth control flow with ClockLock. Timing your Python functions has never been easier.

Project description

ClockLock

A streamlined Python utility that gracefully enforces timeouts on your Python functions. Crafted with precision and simplicity, ClockLock lets you leash your function time execution with ease. With its featured decorator and function runner, both equipped with a fallback mechanism, maintaining a smooth control flow has never been more efficient.

How It Works

ClockLock uses Python's concurrency mechanisms to keep your functions punctual. Providing an easy-to-use decorator and a direct function runner, your functions can be executed with a specified timeout limit - all within a few lines of code. If a function exceeds its time, a fallback function is triggered, facilitating a smooth control flow. Easy to set up and handy in its use, ClockLock guarantees your Python functions never overstay their welcome.

Why ClockLock?

  • Graceful: ClockLock manages function timeout smoothly and efficiently.
  • Fallback mechanism: Provides an option to execute a fallback function if the primary function exceeds the given time.
  • Versatile: Equally suited for small scripts and large applications.
  • Pythonic: A clean, minimal, and familiar Python interface.

Features

  • Decorator: Simply annotate a function with @clocklock.timeout(seconds=10) to keep it in check.
  • Function runner: Use clocklock.timeout_fn(run_fn, timeout, fallback_fn, args, kwargs) to control the execution of a function.
  • Fallback function: Define a fallback function which gets triggered in case the primary function timeouts.

Installation

Use pip to install:

pip install clocklock

Or, if you use Poetry:

poetry add clocklock

Usage

First, import ClockLock:

from clocklock import timeout, timeout_fn

Then, you can register a function for timeout:

@timeout(seconds=1, fallback=lambda:"Fallback Task Complete")
def slow_function():
    time.sleep(2)
    return "done"

slow_function() # returns "Fallback Task Complete"

Or, use the function runner:

def slow_function():
    time.sleep(2)
    return "done"

def fallback_func():
    print("Primary function exceeded time limit.")
timeout_fn(seconds=1, func=slow_function, fallback=fallback_func) # prints "Primary function exceeded time limit."

Please view the 'examples' directory for detailed usage examples.

Contributing

We encourage you to contribute to ClockLock! Please check out the Contributing to ClockLock guide for guidelines about how to proceed.

License

ClockLock is released under 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

clocklock-1.0.1.tar.gz (3.7 kB view details)

Uploaded Source

Built Distribution

clocklock-1.0.1-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

Details for the file clocklock-1.0.1.tar.gz.

File metadata

  • Download URL: clocklock-1.0.1.tar.gz
  • Upload date:
  • Size: 3.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for clocklock-1.0.1.tar.gz
Algorithm Hash digest
SHA256 1f690a5360cdce9b7be09c76382f6cd0cfebd248d96f7b50e0ee2b4c08914b46
MD5 e19847f44a21d4650df682278df81887
BLAKE2b-256 14cc3836f0044ef1a5ba55b020e4a7738d43cbe8f43bba6c72b6bf148b82f058

See more details on using hashes here.

File details

Details for the file clocklock-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: clocklock-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 4.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for clocklock-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 67d739921c987b7311708720e5975b9f6379a22afb016f3f5057a86e7f0f67d7
MD5 7250654da32934234d47e04c41fe24b8
BLAKE2b-256 1ede503e3bc8d8621c2b93a6f7f54b79a86c03afea27733dc23375a0d46fc6d1

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