===== Usage ===== To use redis-lock in a project:: import redis_lock Blocking lock:: conn = StrictRedis() lock = redis_lock.Lock(conn, "name-of-the-lock") if lock.acquire(): print("Got the lock. Doing some work ...") time.sleep(5) Blocking lock with timeout:: conn = StrictRedis() lock = redis_lock.Lock(conn, "name-of-the-lock") if lock.acquire(timeout=3): print("Got the lock. Doing some work ...") time.sleep(5) else: print("Someone else has the lock.") Non-blocking lock:: conn = StrictRedis() lock = redis_lock.Lock(conn, "name-of-the-lock") if lock.acquire(blocking=False): print("Got the lock. Doing some work ...") time.sleep(5) else: print("Someone else has the lock.") Releasing previously acquired lock:: conn = StrictRedis() lock = redis_lock.Lock(conn, "name-of-the-lock") lock.acquire() print("Got the lock. Doing some work ...") time.sleep(5) lock.release() The above example could be rewritten using context manager:: conn = StrictRedis() with redis_lock.Lock(conn, "name-of-the-lock"): print("Got the lock. Doing some work ...") time.sleep(5) In cases, where lock not necessarily in acquired state, and user need to ensure, that it has a matching ``id``, example:: lock1 = Lock(conn, "foo") lock1.acquire() lock2 = Lock(conn, "foo", id=lock1.id) lock2.release() To check if lock with same name is already locked (it can be this or another lock with identical names):: is_locked = Lock(conn, "lock-name").locked() You can control the log output by modifying various loggers:: logging.getLogger("redis_lock.thread").disabled = True logging.getLogger("redis_lock").disable(logging.DEBUG)