Skip to content
A simple distributed lock in Python using ZooKeeper as the back end.
Python
Find file
Latest commit 70665ca Dec 18, 2012 @tinyogre Merge pull request #2 from rride/master
Non-blocking acquire() and ScopedLock

README.txt

Copyright (c) 2011 Joe Rumsey (joe@rumsey.org)
Released under the LGPL, see COPYING.txt for details

zklock is a python package that provides a simple distributed mutex
implementation using zookeeper as the back end.

* HOW TO INSTALL

$ pip install zklock

Or get it from github, see http://github.com/tinyogre/zklock for details

zklock requires zkpython.  Additionally, installing zkpython requires
the zookeeper C library be installed first.  You can download and
learn about ZooKeeper here: http://zookeeper.apache.org/.  Though
ZooKeeper is written in Java, the C library is part of the main
distribution.

* WHY DOES THIS EXIST

I'm writing a mobile game that includes an online turn based
mode.  I started investigating Cassandra for storage of games, but
almost immediately found that I needed some kind of row level locking
to avoid races with both players updating the same game.  Turns in
this game are simultaneously executed, and I accept a save from
whoever submits it first.  Stored chat has a similar issue.

The web interface is built in python with Django.  So I needed a lock
mechanism for Cassandra in python.  I found existing ZooKeeper
solutions in Java, but none in Python.  So here's this.  It's cribbed
from several other Java examples out there, but not translated.

* HOW TO USE THIS

See zklocktest.py on github for a simple example.

Something went wrong with that request. Please try again.