The client library for Relukko can be found in module
Project description
PyRelukko
PyRelukko is the official Python client library for the Relukko resource-locking backend. It provides a simple, distributed locking mechanism for coordinating access to shared resources across multiple Python processes or services.
Relukko is intentionally lightweight: it is designed for collaborative environments. The system assumes clients behave cooperatively, and by design it does not enforce protection against misbehaving clients.
Documentation
Full API documentation can be found at:
👉 https://pyrelukko.readthedocs.io
Features
- Simple, Pythonic API for acquiring and releasing locks.
- Centralized lock management via the Relukko backend.
- Lightweight and dependency-minimal.
- Useful for distributed systems, CI pipelines, automated testing and shared-resource orchestration.
Important Design Note
Relukko and PyRelukko are built for trusted, collaborative clients.
⚠️ No client-side trust guarantees
A client that connects to the Relukko backend can forcibly release any lock, including those owned by another client. There is no protection against malicious manipulation of locks.
This is an intentional design decision to keep the system simple and lightweight.
If you require secure, adversarial-resistant locking, you should consider using a system built upon consensus algorithms (e.g., etcd, Consul, Zookeeper).
Ecosystem
The Relukko ecosystem consists of the following components:
1. Relukko Backend (Rust)
The backend is responsible for storing and arbitrating lock states.
Repository: https://gitlab.com/relukko/relukko
2. PyRelukko Client (Python)
This Python package communicates with the backend, providing user-friendly locking primitives.
Repository: https://gitlab.com/relukko/pyrelukko
👉 https://pyrelukko.readthedocs.io
3. Robotframework-Relukko (Python)
Robot Framework keyword library that enables acquiring and releasing locks directly from Robot Framework test suites. Depends on PyRelukko.
Repository: https://gitlab.com/relukko/robotframework-relukko
Installation
Install via pip:
pip install pyrelukko
Requires Python 3.11+.
Quick Start
Basic Example
from pyrelukko import RelukkoClient
relukko = RelukkoClient(
base_url="http://localhost:3000",
api_key="api-key",
)
lock = relukko.acquire_relukko("LockName", "Creator", 300)
lock_id = lock.get('id')
# Perform work while holding the lock
relukko.delete_relukko(lock_id)
When to Use PyRelukko
PyRelukko is ideal for:
- Distributed test harnesses
- CI/CD job coordination
- Server orchestration scripts
- Managing exclusive access to hardware devices or simulation environments
- Any cooperative environment where multiple workers need a shared mutex
It is not designed for untrusted environments or where mutual exclusion must be strongly enforced.
Limitations
- ❗ A malicious or buggy client can release locks it doesn’t own.
- ❗ No cryptographic guarantees or client identity.
- ❗ Requires a running Relukko backend server.
- ❗ Not fault-tolerant like consensus-based systems.
These limitations are intentional, in exchange for simplicity and minimal overhead.
Running the Backend
The backend is written in Rust and provides a simple HTTP API. See the backend repository for instructions:
👉 https://gitlab.com/relukko/relukko
Contributing
Contributions to both the Python client and Rust backend are welcome! Feel free to open issues or merge requests in the relevant GitLab repository.
License
MIT License.
See LICENSE for details.
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 pyrelukko-0.11.0.tar.gz.
File metadata
- Download URL: pyrelukko-0.11.0.tar.gz
- Upload date:
- Size: 74.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: python-requests/2.32.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
02d23d4c6f02adccc159a6effdc27c7dd4a708f904494c4d95d265bf4b1089eb
|
|
| MD5 |
41490fde0d7385d77cbfba83bab4d0b4
|
|
| BLAKE2b-256 |
3c7f6c2c19ba43dc7d9b996de8bb614ae236a0ea7a1a2ec1fa3fff22d065749f
|
File details
Details for the file pyrelukko-0.11.0-py3-none-any.whl.
File metadata
- Download URL: pyrelukko-0.11.0-py3-none-any.whl
- Upload date:
- Size: 17.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: python-requests/2.32.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6a9d8d6b419c6f0d478fe63466ab983c41a2da2191cfcf64440b3fdc3e943220
|
|
| MD5 |
63e56dfbe58c26e4a4dc537dd28db6b1
|
|
| BLAKE2b-256 |
a31829fd1e44f323b4230207e0146c717eea74d98a4eb5d0b4cc28e31ac30697
|