Skip to main content

Asyncio implemetation of Redis distributed locks

Project description

https://travis-ci.org/joanvila/aioredlock.svg?branch=master https://codecov.io/gh/joanvila/aioredlock/branch/master/graph/badge.svg https://badge.fury.io/py/aioredlock.svg

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for aioredlock, version 0.1.1
Filename, size File type Python version Upload date Hashes
Filename, size aioredlock-0.1.1-py3-none-any.whl (6.6 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size aioredlock-0.1.1.tar.gz (4.1 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page