Single-execution lock decorator with Redis and file-based backends.
Project description
Onloq
Lightweight worker concurrency control via redis or file locks.
When multiple workers run the same task simultaneously, Onloq ensures only one proceeds - the rest skip silently. Supports TTL-based expiry, decorator and direct-call usage, and custom error handling.
Install
pip install onloq
Quick Start
from onloq import Onloq
loq = Onloq() # uses filesystem locks by default
@loq
def my_task():
...
# Redis-backed
import redis
loq = Onloq(redis_connection=redis.Redis())
Usage
Decorator
@loq
def send_report():
...
@loq(name="custom.lock.name", ttl=60)
def sync_data():
...
Direct call
loq.execute(send_report, ttl=30)
Options
| Parameter | Default | Description |
|---|---|---|
redis_connection |
None |
Redis client instance. Falls back to file locks if not set. |
locks_dir |
tempdir/onloq_locks |
Directory for file-based lock files. |
ttl |
25 |
Lock lifetime in seconds. |
on_error |
'raise' |
Error behavior: 'raise', None (log and suppress), or a callable (name, exc, *args, **kwargs). |
logger |
None |
Standard logger for warnings and errors. |
Behavior
- If the lock is already held, the call returns
Noneimmediately - no waiting, no retry. - File locks use
mtimeto enforce TTL, preventing stale locks from blocking indefinitely. - Lock names default to
module.qualnameof the wrapped function.
License
MIT
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 onloq-0.1.9.tar.gz.
File metadata
- Download URL: onloq-0.1.9.tar.gz
- Upload date:
- Size: 5.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bd819e949c2fc5ecc27287b7c492c4b3ecd6bc63d57d445967c6366b44666a63
|
|
| MD5 |
0132617334280ae0907ef3d39937a828
|
|
| BLAKE2b-256 |
7387252eb7387952f045ef5c94744d34343b3c5951883ef09557c96dd7dbaca1
|
File details
Details for the file onloq-0.1.9-py3-none-any.whl.
File metadata
- Download URL: onloq-0.1.9-py3-none-any.whl
- Upload date:
- Size: 5.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b3836a8eae0480476c0fc9a815f494af207d7a6cf6bd9ecaf35e7551aa29a72e
|
|
| MD5 |
8e83bb8927e9c7bd1f5b0036fa1aec80
|
|
| BLAKE2b-256 |
c6ef9585284873dbab4fd7f7e1f8f4636588648b848f94bad68e605d68ea4a34
|