Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

A distributed lock recipe for etcd

Project description

## Python Lock library for ETCD 2.0

Since ETCD 0.4, all [the built in modules were removed](, including the locking module. The API still provides an atomic compare-and-swap method to implement locking, thus providing the core functionality to create semaphores and mutexes. This library is built on top of that, matching the API that was in [python-etcd]( before it was removed as much as possible.

[![Circle CI](](

#### Simple Usage

import etcd
from etcdlock import Lock

lock = Lock(etcd.Client(), 'path/to/my/key')
while lock
# lock is acquired
# lock will renew itself by default until released
# do work
request = ....

# check if we still have the lock
if lock.is_locked() is False:

#### Explicit Usage

import etcd
from etcdlock import Lock

lock = Lock(client, 'path/to/my/key', ttl=30, renewSecondsPrior=)
if lock.acquire(timeout=20):
t = Thread(target=someheavywork)
# some other work
lock.release() # not recommended, use a context manager
# failed to acquire the lock in 20 seconds

Please see [the tests]( while the documentation is lacking, thanks.

Project details

Download files


Files for python-etcd-lock, version 0.0.4
Filename, size File type Python version Upload date Hashes
Filename, size python_etcd_lock-0.0.4-py2.7.egg (6.2 kB) File type Egg Python version 2.7 Upload date Hashes View hashes
Filename, size python-etcd-lock-0.0.4.tar.gz (3.7 kB) File type Source Python version None Upload date Hashes View hashes

Supported by
