Asyncio implemetation of Redis distributed locks
Project description
The asyncio redlock algorithm implementation.
Redlock and asyncio
The redlock algorithm is a distributed lock implementation for Redis. There are many implementations of it in several languages. In this case, this is the asyncio compatible implementation for python 3.5+.
Usage
from aioredlock import Aioredlock
# Define a list of connections to your Redis instances:
redis_instances = [
{'host': 'localhost', 'port': 6379}
]
# Create a lock manager:
lock_manager = Aioredlock(redis_instances)
# Try to acquire the lock:
lock = await lock_manager.lock("resource_name")
# Release the lock:
await lock_manager.unlock(lock)
# Clear the connections with Redis
await lock_manager.destroy()
How it works
The Aioredlock constructor takes a list of connections (host and port) where the Redis instances are running as a required parameter. In order to acquire the lock, the lock function should be called. If the lock operation is successful, lock.valid will be true.
>From that moment, the lock is valid until the unlock function is called or when the 10 seconds timeout is reached.
In order to clear all the connections with Redis, the lock_manager destroy method can be called.
To-do
Allow the user to set a desired lock timeout with 10 seconds default
Raise an exception if the lock cannot be obtained so no need to check for lock.valid
Handle/encapsulate aioredis exceptions when performing operations
Expire the lock valid attribute according to the lock validity in a safe way if possible
Lock extension
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
Hashes for aioredlock-0.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 114bdf25d367e2e4cf855e48e5477badb89eefdcea583de757044635cb4afce2 |
|
MD5 | cd45bcff9beaa309b1afd7ac58022521 |
|
BLAKE2b-256 | e3ecb774f98fccdd7e4bf8c1b786f9ef4d73083b12fee2b43de162243b11e34e |