A simple XML-RPC-based lock daemon to support fencing.
Project description
Using the lockd API
lockd provides a light-weight implementation of a locking mechanism for long-running resources by maintaining lock files in a given directory.
>>> import tempfile >>> lockdir = tempfile.mkdtemp() >>> from gocept.lockd.lockd import Lockd >>> daemon = Lockd(lockdir)
Resources are identified by a string and clients performing the lock are identified by another string:
>>> daemon.lock('resource1', 'client1')
Once a resource is locked, it can not be locked again:
>>> daemon.lock('resource1', 'client2') Traceback (most recent call last): Exception: Resource already locked by 'client1'
However, other resources can be locked in parallel:
>>> daemon.lock('resource2', 'client2')
Clients, other than the client who locked a resource, can not unlock it:
>>> daemon.unlock('resource1', 'client2') Traceback (most recent call last): Exception: Resource locked by 'client1' cannot be unlocked by 'client2'
The client, who locked the resource, can unlock it again:
>>> daemon.unlock('resource1', 'client1')
Once unlocked, it can not be unlocked a second time:
>>> daemon.unlock('resource1', 'client1') Traceback (most recent call last): Exception: Resource not locked
IMPORTANT security note
Resource identification and client authorization are out of scope for lockd. It should only be used and exposed within a trusted environment.
Cleanup:
>>> import shutil >>> shutil.rmtree(lockdir)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file gocept.lockd-0.1.tar.gz
.
File metadata
- Download URL: gocept.lockd-0.1.tar.gz
- Upload date:
- Size: 4.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f7d37670134ddede6a09ea4694e8d1dce42b0d0c9b4fc39f370bf84560af3e1d |
|
MD5 | dd0cd2c54952d01916ce65275a7eaefb |
|
BLAKE2b-256 | 948a8f2c13b34bfa1b461b46c6f1bf988eb72ce9100ad98fc84cd02b6cd4f66c |