A cluster-supported distributed lock on Redis and Python
Project description
Redistock
A simple and easy-to-use and cluster-supported distributed lock implement based on Redis and Python.
Installation
pip install redistock
Usage
Simple usage:
import redis
from redistock import Redistock
redis_conn = redis.StrictRedis(...)
# simple
lock = Redistock(redis_conn, 'name')
if lock.acquire():
print('Obtained lock')
lock.release()
# with statement
with Redistock(redis_conn, 'name'):
print('Obtained lock')
Advanced usage:
import redis
from redistock import Redistock
from redistock import RedistockNotObtained
redis_conn = redis.StrictRedis(...)
with Redistock(redis_conn, 'name', ttl=1):
# will be blocked for 10 seconds
print('Obtained lock')
with Redistock(redis_conn, 'name', ttlms=100):
# will be blocked for 100 milliseconds
print('Obtained lock')
with Redistock(redis_conn, 'name', delay=1):
# will delay 1 seconds between twice retry, default 0.001
print('Obtained lock')
lock = Redistock(redis_conn, 'name', block=False)
# do not retry, raise RedistockNotObtained if not obtained lock
if lock.acquire():
print('Obtained lock')
lock.release()
try:
with Redistock(redis_conn, 'name', timeout=10):
# will try to acquire for 10 seconds, success or raise RedistockNotObtained
# after 10 seconds
print('Obtained lock')
except RedistockNotObtained:
print('Not obtained lock')
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
redistock-0.1.2.tar.gz
(3.4 kB
view hashes)
Built Distribution
Close
Hashes for redistock-0.1.2-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4d405d4864ac54eb8ed71e682d313240f38b4083f8c44469460b727fc59a5bd4 |
|
MD5 | 47f0ff12dd752625f80c1cb8ffe5053d |
|
BLAKE2b-256 | 64a08c62e9ba08b0c398411676e0891a7ea77e522d93f014cc67ef067b2eae75 |