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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file aioredlock-0.1.1.tar.gz.

File metadata

  • Download URL: aioredlock-0.1.1.tar.gz
  • Upload date:
  • Size: 4.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for aioredlock-0.1.1.tar.gz
Algorithm Hash digest
SHA256 2b15c9515fc0143bb8c26de059c04f839e4af3ff421741042558a5f540e188f6
MD5 a5fd5434c50757bfd6ab4b816b2af9b7
BLAKE2b-256 3c08ab0a71102aafe2cffe5f82aa9026908411716e5292d2fc4299c16437409f

See more details on using hashes here.

File details

Details for the file aioredlock-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for aioredlock-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 114bdf25d367e2e4cf855e48e5477badb89eefdcea583de757044635cb4afce2
MD5 cd45bcff9beaa309b1afd7ac58022521
BLAKE2b-256 e3ecb774f98fccdd7e4bf8c1b786f9ef4d73083b12fee2b43de162243b11e34e

See more details on using hashes here.

Supported by

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