Skip to main content

Usage

from pylock import Lock

with Lock('a_key', expires=60, timeout=10):
    # do something that should only be done one at a time

Configuration

Backends

There are three available backends:

Open (non-locking) backend

DEFAULT_BACKEND = {
    'class': 'pylock.backends.open_lock.OpenLock',
    'connection': 'open://'
}

Warning This backend is not a real lock since it can always be acquired even if another instance has acquired it already. It is meant to be used for testing when you don’t want to depend on a running redis or memcache instance and don’t care about the lock working.

Redis backend

DEFAULT_BACKEND = {
    'class': 'pylock.backends.redis_lock.RedisLock',
    'connection': 'redis://'
}

Note: all fields after the scheme are optional, and will default to localhost on port 6379, using database 0.

Memcache backend (coming soon)

DEFAULT_TIMEOUT (default: 60)

If another client has already obtained the lock, sleep for a maximum of this many seconds before giving up. A value of 0 means no wait (give up right away).

The default timeout can be overridden when instantiating the lock.

DEFAULT_EXPIRES (default: 10)

We consider any existing lock older than this many seconds to be invalid in order to detect crashed clients. This value must be higher than it takes the critical section to execute.

The default expires can be overridden when instantiating the lock.

KEY_PREFIX (default 'pylock:')

This is used to prefix the key for the generated lock.

For Lock('somekey'), the generated key will be 'pylock:somekey'

Inspired by

Redis backend

The redis backend is almost an exact copy of Ben Bangert’s `retools.lock <https://github.com/bbangert/retools/blob/master/retools/lock.py>`_ which is based on Chris Lamb’s example

Memcache backend (coming soon)

The memcache backend is inspired by the following: - https://github.com/snbuback/DistributedLock - http://jbq.caraldi.com/2010/08/simple-distributed-lock-with-memcached.html - http://www.regexprn.com/2010/05/using-memcached-as-distributed-locking.html

Metadata

Release files for pylock 0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pylock 0.4
File Size Uploaded
pylock-0.4.tar.gz 9.6 kB Details

Release files / pylock-0.4.tar.gz

Download URL pylock-0.4.tar.gz
Size 9.6 kB
Tags Source
SHA-256 checksum
How to use checksums
3bea0dbe0d0ca6753d106a334aab857ed1628a0d18b70687f8633c704d1679d1
BLAKE2b-256 checksum
How to use checksums
4fef0c2fd3caaa308c0bf3db8f572e7fb40554bcc84a8c9258492bf9aa485dc0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.4

Release history Release notifications | RSS feed

This release

0.4 This release

1 release file

0.3

1 release file

0.2

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page