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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file tquota-0.0.3.tar.gz
.
File metadata
- Download URL: tquota-0.0.3.tar.gz
- Upload date:
- Size: 11.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | aef1ce05220898f51bd4507625d25d6ef7035224833ad9fa463aa885399cd1c9 |
|
MD5 | 196865692ffef868fbcfe13ee3d724c7 |
|
BLAKE2b-256 | 0704dac529cce835c1bfa44e7739d6dc8d37ad5515a863d9a2e2d2771a0c3f5f |
File details
Details for the file tquota-0.0.3-py3-none-any.whl
.
File metadata
- Download URL: tquota-0.0.3-py3-none-any.whl
- Upload date:
- Size: 8.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a4de02b74ea8d49e07976cf35461897ebb24c1bb23d5d17c3d62da9278701584 |
|
MD5 | 091e8e00dac278fbe774d615fcbf6b4d |
|
BLAKE2b-256 | 62bca598274d07599808ac79bf64599b598e0fc65f56d2ff470fa7bfb11e2fc3 |