Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gocept.lockd-0.1.tar.gz (4.0 kB view details)

Uploaded Source

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

Hashes for gocept.lockd-0.1.tar.gz
Algorithm Hash digest
SHA256 f7d37670134ddede6a09ea4694e8d1dce42b0d0c9b4fc39f370bf84560af3e1d
MD5 dd0cd2c54952d01916ce65275a7eaefb
BLAKE2b-256 948a8f2c13b34bfa1b461b46c6f1bf988eb72ce9100ad98fc84cd02b6cd4f66c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page