Skip to main content

Python Distributed Lock with memcached support

Project description

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

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

DistributedLock-1.2.tar.gz (3.5 kB view details)

Uploaded Source

File details

Details for the file DistributedLock-1.2.tar.gz.

File metadata

File hashes

Hashes for DistributedLock-1.2.tar.gz
Algorithm Hash digest
SHA256 18fcf4127383122d0be6ea2dddc745296a13e2a9691019f3c97bc0c6b33680cd
MD5 80e5c533923042835e748d6de4a81bd6
BLAKE2b-256 1e652cdd9dbc8707bd197fd8a9823b19c86f8904203363c90ba16e6f66b4bc23

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