From 2d008d05a69525862896686deab92ee11e118612 Mon Sep 17 00:00:00 2001 From: Julien Danjou Date: Tue, 18 Nov 2014 15:33:20 +0100 Subject: [PATCH] doc: add locking Change-Id: I1de6356700a8fb2903b7627fd890a6a5532c256d --- doc/source/tutorial/index.rst | 1 + doc/source/tutorial/lock.rst | 14 ++++++++++++++ examples/lock.py | 11 +++++++++++ 3 files changed, 26 insertions(+) create mode 100644 doc/source/tutorial/lock.rst create mode 100644 examples/lock.py 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()