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)
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
|