Except that python-redis-lock module provides contextmanager for the lock object - what are the differences when compared to the lock object you get from redispy module? what is so special about python-redis-lock?
rc = Redis.from_url(settings.BROKER_URL)
lock_str = "bld-%s-lock" % bld_id
Using redispy:
lock = rc.lock(lock_str)
Using python-redis-lock:
lock = redis_lock.Lock(rc, lock_str)
I think the context manager is not the major difference here, because if you see code of redis-py Lock they have the __enter__
and __exit__
added in there.
Both the Lock's seem to use SETNX for acquiring the lock:
The major difference I saw in there was the way blocking the threads work.
Something like:
timed_out = not self._client.blpop(self._signal, blpop_timeout) and timeout
Something like:
import time as mod_time ... stop_trying_at = mod_time.time() + blocking_timeout ... mod_time.sleep(sleep)