summaryrefslogtreecommitdiff
path: root/redis/lock.py
diff options
context:
space:
mode:
Diffstat (limited to 'redis/lock.py')
-rw-r--r--redis/lock.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/redis/lock.py b/redis/lock.py
index edf97d2..8d481d7 100644
--- a/redis/lock.py
+++ b/redis/lock.py
@@ -168,6 +168,9 @@ class Lock(object):
sleep = self.sleep
if token is None:
token = uuid.uuid1().hex.encode()
+ else:
+ encoder = self.redis.connection_pool.get_encoder()
+ token = encoder.encode(token)
if blocking is None:
blocking = self.blocking
if blocking_timeout is None:
@@ -205,8 +208,14 @@ class Lock(object):
"""
Returns True if this key is locked by this lock, otherwise False.
"""
+ stored_token = self.redis.get(self.name)
+ # need to always compare bytes to bytes
+ # TODO: this can be simplified when the context manager is finished
+ if stored_token and not isinstance(stored_token, bytes):
+ encoder = self.redis.connection_pool.get_encoder()
+ stored_token = encoder.encode(stored_token)
return self.local.token is not None and \
- self.redis.get(self.name) == self.local.token
+ stored_token == self.local.token
def release(self):
"Releases the already acquired lock"