Skip to main content
Distributed Lock
=======================

Python distributed lock (currently only with memcached)

How to configure
------------------------

In your setup file (in django, settings.py), configure locking:

```python
import distributedlock
distributedlock.DEFAULT_MEMCACHED_CLIENT = memcache.Client(['127.0.0.1:11211'])
distributedlock.DEFAULT_TIMEOUT=60
distributedlock.DEFAULT_BLOCKING=False
```

If you setting up memcached in Django, you can use it abstraction of memcached.

```python
from django.core.cache import cache
distributedlock.DEFAULT_MEMCACHED_CLIENT = cache
```

You can configure this settings in each lock, as parameter.


How to use
------------------------

Using minimal configuration, as decorator:

```python
from distributedlock import distributedlock
@distributedlock()
def hello_world():
print 'running'
```

Or as `with` block:

```python
from distributedlock import distributedlock

#... my code before
with distributedlock('hello'):
print 'running'
#... my code after
```

You can use with conventional threading.Lock (only in process locking)

```python
import threading
with distributedlock('hello', lock=threading.Lock())
print 'running'
```

Arguments
------------------------

```python
def distributedlock(key, lock=None, blocking=None)
```

* key: name of key in memcached. Avoid long names, because memcached supports only 255 characters in key. Using decorator
key name will be class name + method name if not specified.
* lock: If you desire use another lock strategy, like `threading.Lock()` or `threading.RLock()`. defaults to `distributedlock.memcachedlock.MemcachedLock`
* blocking: If another process has lock, wait until have a lock or abort immediately, raising `LockNotAcquiredError`. Defaults to `distributedlock.DEFAULT_BLOCKING`

Tips
------------------------

* If you have a dynamic key, use lock with block to compose your key. For example:

```python
def synchronized_method(arg1)
with distributedlock('sync_process_%d' % arg1.id):
# do something
```

Metadata

Release files for DistributedLock 1.2

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

Source distribution (sdist)

Source distribution for DistributedLock 1.2
File Size Uploaded
DistributedLock-1.2.tar.gz 3.5 kB Details

Release files / DistributedLock-1.2.tar.gz

Download URL DistributedLock-1.2.tar.gz
Size 3.5 kB
Tags Source
SHA-256 checksum
How to use checksums
18fcf4127383122d0be6ea2dddc745296a13e2a9691019f3c97bc0c6b33680cd
BLAKE2b-256 checksum
How to use checksums
1e652cdd9dbc8707bd197fd8a9823b19c86f8904203363c90ba16e6f66b4bc23
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.2 This release

1 release file

1.1

1 release file

1.0

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