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.

Source Distribution

aioredlock-0.1.1.tar.gz (4.1 kB view hashes)

Uploaded Source

Built Distribution

aioredlock-0.1.1-py3-none-any.whl (6.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page