Skip to main content

A lightweight processing timer module for quota-based cloud environments.

Project description

TQuota

tquota.Quota is a lightweight processing timer module designed to monitor time effectively when running code on cloud platforms with quota limitations, such as Kaggle and Google Colab. These platforms impose a limit of x hours of processing per session, the Quota class allows users to set a processing quota time and a buffer time before the quota limit ends, ensuring efficient resource management.

Features

  • Quota Management: Easily track and manage session time to avoid overuse of limited resources on platforms with quota restrictions.
  • Dynamic Gap Timing: Automatically adjusts the buffer time (gap_time) based on the remaining session time when set to 'auto'.
  • Auto Gap Calculation: When gap_time is set to 'auto', the system dynamically calculates the optimal gap before the session ends, ensuring efficient timing without the need for manual setup.
  • Simple Interface: The class provides Easy-to-use and intuitive methods to check whether time is still available or if the session has reached its limit.
  • Optional Logging: Enable logging to track quota usage and gap timing for debugging or monitoring purposes.
  • Compatibility: It can work with Python versions 2.7 and 3.0+.

Quota Class

The package tquota includes a single class, Quota, which has two main parameters and an optional one:

  • quota_time: (str) Default value: 6h. Represents the maximum processing time for the session.
  • gap_time: (str) Default value: 'auto'. Represents the buffer time before the session closes, adjusted dynamically based on elapsed time.
  • enable_logging: (bool, optional) Default value: False. Whether to enable logging or not.

Time Format

The time should be specified in a strict format, consisting of two parts: dw, where:

  • d: Represents the time as digits

  • w: Represents the time unit with one character:

    [ s: Seconds, m: Minutes, h: Hours, d: Days]

Functions

The Quota class provides the following key methods:

time_up:

  • Description: This method checks whether the processing time has reached or exceeded its quota limit.
  • Returns:
    • True: If the process has reached or exceeded the defined quota time.
    • False: If there is still time remaining within the quota limit.
  • Usage:
    if qt.time_up():
        print('Time limit reached.')
    

hastime:

  • Description: This method checks whether there is still time left before the process reaches the quota limit.
  • Returns:
    • True: If there is still time remaining before reaching the quota.
    • False: If the process has exceeded the quota time or is within the gap buffer.
  • Usage:
    if qt.hastime():
        print('There’s still time to process.')
    

remaining_time:

  • Description: This method returns the remaining time before the quota limit is reached in a human-readable format.
  • Returns: A string representing the remaining time formatted as "xh:xm:xs" (e.g., "0h:10m:15s" for 10 minutes and 15 seconds remaining).
  • Usage:
    remaining = qt.remaining_time()
    print(f'Remaining time: {remaining}')
    

Installation

You can install the package from PyPI using the following command:

pip install tquota

Alternatively, you can clone the repository and install the package directly:

git clone https://github.com/aljbri/tquota.git
cd tquota
pip install .

Usage

Import the Quota class as follows:

from tquota import Quota

Example Usage

  • Using the time_up function:
from tquota import Quota
import time

# Quota time is set for 1 minute and gap time is auto-adjusted
qt = Quota('1m')
# Set quota_time for 1 minute and gap_time for 30 seconds
# qt = Quota('1m', '30s')

for i in range(1000):
    time.sleep(1)
    if qt.time_up():
        print('The process has reached the limited time.')
        break
  • Using the hastime function:
from tquota import Quota
import time

# Quota time is set for 1 minute and gap time is auto-adjusted
# qt = Quota('1m')

# Set quota_time for 1 minute and gap_time for 30 seconds
qt = Quota('1m', '30s')

for i in range(1000):
    time.sleep(1)
    if not qt.hastime():
        print('The process has reached the limited time.')
        break

Error Handling

The Quota class may raise the following exceptions:

  • ValueError: Raised for invalid time formats or non-positive time values.
  • TypeError: Raised if non-string values are provided for time parameters.
  • AttributeError: Raised if internal properties are accessed incorrectly.

License

This project is licensed under the MIT License. See the LICENSE file for details.


Updates

v0.0.1

  • Initial implementation of the quota class.

v0.0.2

  • Major error fix quota class.

v0.0.3

  • Auto Gap Time: Added support for automatic calculation of gap_time when it is set to 'auto', dynamically adjusting the buffer time based on the session duration.
  • Error Handling Enhancements: Improved validation for time formats, with clearer exceptions raised (ValueError, TypeError, AttributeError) for invalid inputs or improper usage.
  • Optimized Logging: Added an optional logging feature that provides detailed output for quota time, gap time, and overall usage when enabled.
  • Performance Improvements: Optimized the time-tracking logic for smoother integration into various cloud platforms.
  • Python Compatibility: Compatible with Python versions 2.7 and 3.0+.

Contributing

Contributions are welcome! If you have suggestions or improvements, please feel free to submit a pull request or open an issue.


Contact

For inquiries or feedback, please contact the author at mr.aljbri@gmail.com.

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

tquota-0.0.3.tar.gz (11.3 kB view hashes)

Uploaded Source

Built Distribution

tquota-0.0.3-py3-none-any.whl (8.2 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