diff --git a/doc/source/tutorial/index.rst b/doc/source/tutorial/index.rst index e83c0fc1..8cb31a39 100644 --- a/doc/source/tutorial/index.rst +++ b/doc/source/tutorial/index.rst @@ -11,3 +11,4 @@ use tooz in your application. coordinator group_membership leader_election + lock diff --git a/doc/source/tutorial/lock.rst b/doc/source/tutorial/lock.rst new file mode 100644 index 00000000..91c32624 --- /dev/null +++ b/doc/source/tutorial/lock.rst @@ -0,0 +1,14 @@ +====== + Lock +====== + +Tooz provides distributed locks. A lock is identified by a name, and a lock can +only be acquired by one coordinator at a time. + +.. literalinclude:: ../../../examples/lock.py + :language: python + +The method :meth:`tooz.coordination.CoordinationDriver.get_lock` allows +to create a lock identified by a name. Once the you retrieve this lock, you can +use it as a context manager or use the :meth:`tooz.locking.Lock.acquire` and +:meth:`tooz.locking.Lock.release` methods to acquire and release the lock. diff --git a/examples/lock.py b/examples/lock.py new file mode 100644 index 00000000..c0b722db --- /dev/null +++ b/examples/lock.py @@ -0,0 +1,11 @@ +from tooz import coordination + +coordinator = coordination.get_coordinator('kazoo://localhost', b'host-1') +coordinator.start() + +# Create a lock +lock = coordinator.get_lock("foobar") +with lock: + print("Do something that is distributed") + +coordinator.stop()