lockable resource module
Project description
lockable
Resource locking module for python.
Originally designed for following projects:
Module provides python API and simple CLI interface.
Resource is released in following cases:
- process ends
- when context ends when
lockable.auto_lock(..)is used - allocation.unlock() is called
- lockable.unlock() is called
Resources data provider support following mechanisms:
resources.jsonfile in file system- python list of dictionaries
- http uri which points to API and is used with HTTP GET method. API should provide
resources.jsondata as json object.
CLI interface
% lockable --help
usage: lockable [-h] [--validate-only] [--lock-folder LOCK_FOLDER] [--resources RESOURCES]
[--timeout TIMEOUT] [--hostname HOSTNAME]
[--requirements REQUIREMENTS]
[command [command ...]]
run given command while suitable resource is allocated.
Usage example: lockable --requirements {"online":true} echo using resource: $ID
positional arguments:
command Command to be execute during device allocation
optional arguments:
-h, --help show this help message and exit
--validate-only Only validate resources.json
--lock-folder LOCK_FOLDER
lock folder
--resources RESOURCES
Resources file (utf-8) or http uri
--timeout TIMEOUT Timeout for trying allocate suitable resource
--hostname HOSTNAME Hostname
--requirements REQUIREMENTS
requirements as json string
API's
Constructor
lockable = Lockable([hostname], [resource_list_file], [resource_list], [lock_folder])
Allocation
allocation_context = lockable.lock(requirements, [timeout_s])
print(allocation_context.resource_info)
print(allocation_context.resource_id)
allocation_context.unlock()
# or using resource info
lockable.unlock(allocation_context)
Allocation context contains following API:
requirements: dictOriginal requirements for allocationresource_info: dictAllocated resource informationunlock(): funcrelease resource lock functionallocation_queue_time: timedeltaHow long waited before allocationallocation_start_time: datetimewhen allocation was startedrelease_time: datetimewhen allocation was endedalloc_id: strallocation idallocation_durations: timedeltahow long time allocation takes
or using context manager which unlock automatically
with lockable.auto_lock(requirements, [timeout_s]) as allocation:
print(allocation.resource_info)
Resource requirements are evaluated using
mongoquery, so MongoDB-style
operators like $in and $gt are supported when selecting resources.
Tips:
You can allocate also offline devices by set requirements "online": None .
You can ignore also hostname same same way by setting it to None`
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lockable-0.13.1.tar.gz.
File metadata
- Download URL: lockable-0.13.1.tar.gz
- Upload date:
- Size: 24.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fe5e28d297f4ac1c115fef7d6f68a933a9ea5e15d1e9dd44d8faeeae03de6d56
|
|
| MD5 |
7af22255fdd07cf99b8500c79f568d78
|
|
| BLAKE2b-256 |
d9da137bf2874789b6f6adb1d4c4d6dbcdb3b5b1cbabb3e83e684102d4781c11
|
File details
Details for the file lockable-0.13.1-py3-none-any.whl.
File metadata
- Download URL: lockable-0.13.1-py3-none-any.whl
- Upload date:
- Size: 14.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc1d21f8a18ad9c90d5a7d3ff8d1113540f507467bceae3c4b133cc9191c724d
|
|
| MD5 |
a40aecce6501a6d17f2a0b9ca6ccea0a
|
|
| BLAKE2b-256 |
900c7707ff3b532aabfcfb073efd4f978ed2e7734104df833cb0bf90d87b555c
|