Distributed Inter-Process Communication Library implemented in Python and Memcache server
Project description
dipc
Distributed Inter-Process Communication Library implemented in Python and Memcached. server
Using dipc
dipc library has two classes for distributed lock and semaphore, MemcacheLock and MemcacheSemaphore
Both of those clases has a first argument which is a list of memcached servers, name of lock/semaphore, ttl - timeout (in seconds). MemcacheSemaphore class has additional parameter value - which is number of processes that can access critical section.
acquire() method will wait forever until lock will be granted. You can specify argument blocking=False, and then will this methid will return True/False depending on if lock was granted or not.
>>> from dipc import MemcacheLock ... ml = MemcacheLock(["localhost:11211"], "lock", ttl=60) ... ml.acquire() ... # critical section ... ml.release()>>> from dipc import MemcacheSemaphore ... ml = MemcacheSemaphore(["localhost:11211"], "semaphore", value=10, ttl=60) ... ml.acquire() ... # critical section ... ml.release()
There are also decorators available: distributed_lock and distributed_semaphore First argument is a list of hosts, but it also can be a function that returns list of hosts (for those environments that have config file read in a lazy manner)
>>> from dipc.decorators import distributed_lock ... ... @distributed_lock(["localhost:11211"], "lock", ttl=60) ... def foo(): ... # body>>> from dipc.decorators import distributed_semaphore ... ... @distributed_semaphore(["localhost:11211"], "semaphore", value=10, ttl=60) ... def bar(): ... # body
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
File details
Details for the file dipc-0.4.tar.gz
.
File metadata
- Download URL: dipc-0.4.tar.gz
- Upload date:
- Size: 3.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
0c19a7f3ad99bc33ab1f3496496dadf0859bf32d067b8085311122b8a5702c93
|
|
MD5 |
653f95cca5d8219e127a9afa86d539ed
|
|
BLAKE2b-256 |
cb880cc5777d999dd488cec78fce65bc4bfc768bea92b9d6e6cefd687d152213
|