За исключением того, что модуль python-redis-lock предоставляет контекстный менеджер для объекта блокировки - каковы различия по сравнению с объектом блокировки, который вы получаете из модуля redispy? Что такого особенного в python-redis-lock?
rc = Redis.from_url(settings.BROKER_URL)
lock_str = "bld-%s-lock" % bld_id
Используя redispy:
lock = rc.lock(lock_str)
Использование python-redis-lock:
lock = redis_lock.Lock(rc, lock_str)






Я думаю, что диспетчер контекста не является здесь основным отличием, потому что, если вы видите код redis-py Замок, у них есть добавленные __enter__ и __exit__.
Оба замка, похоже, используют SETNX для получения блокировки:
Основное различие, которое я увидел, заключалось в способе блокировки работы потоков.
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)
не большая разница IMO, можно было бы придерживаться
redispy.redispy.Lockреализован (release) как в конвейерах, так и в Lua, с поддержкой потоковой передачи,python-redis-lockтолько в Lua, но имеет интеграцию с Django.