|
@@ -34,19 +34,27 @@ def release_lock(conn, lockname, identifier):
|
|
|
pipe = conn.pipeline(True)
|
|
|
lockname = 'lock:' + lockname
|
|
|
while True:
|
|
|
- try:
|
|
|
- pipe.watch(lockname)
|
|
|
- # 判断标志是否相同
|
|
|
- if str(pipe.get(lockname), encoding='utf-8') == identifier:
|
|
|
- pipe.multi()
|
|
|
- pipe.delete(lockname)
|
|
|
- pipe.execute()
|
|
|
- return True
|
|
|
-
|
|
|
- # 不同则直接退出 return False
|
|
|
- pipe.unwatch()
|
|
|
- break
|
|
|
-
|
|
|
- except (redis.exceptions.WatchError, TypeError):
|
|
|
- pass
|
|
|
+ # try:
|
|
|
+ pipe.watch(lockname)
|
|
|
+ # 判断标志是否相同
|
|
|
+ if pipe.get(lockname) is not None and str(pipe.get(lockname), encoding='utf-8') == identifier:
|
|
|
+ pipe.multi()
|
|
|
+ pipe.delete(lockname)
|
|
|
+ pipe.execute()
|
|
|
+ return True
|
|
|
+
|
|
|
+ # 不同则直接退出 return False
|
|
|
+ pipe.unwatch()
|
|
|
+ break
|
|
|
+
|
|
|
+ # except (redis.exceptions.WatchError, TypeError):
|
|
|
+ # pass
|
|
|
return False
|
|
|
+
|
|
|
+
|
|
|
+# if __name__ == '__main__':
|
|
|
+# from common.databases import redis_client
|
|
|
+# server = redis_client()
|
|
|
+# identifier = acquire_lock_with_timeout(server, 'dzr')
|
|
|
+# print(identifier)
|
|
|
+# release_lock(server, 'dzr', identifier)
|