"""
@des: 经过测试,redis的锁只能在同一个线程进行加锁,释放,如果要强制释放,r.delete(lockkey)
"""
from twisted.internet import reactor
import redis,time
class Yx(object):
def __init__(self):
self.r = redis.Redis(host='localhost',port=9999,db=1)
self.lock = self.r.lock("123", blocking_timeout=10,sleep=0.1)
def haha1(self):
getlock = self.lock.acquire()
if getlock:
time.sleep(60)
try:
self.lock.release()
except Excepiton,e:
print e
print "release 1 error"
print "end1"
def haha2(self):
getlock = self.lock.acquire(blocking_timeout=5)
try:
self.lock.release()
except Exception,e:
print e
print "release 2 error"
finally:
pass
#self.r.delete("123")
print "end2"
if __name__=="__main__":
yx = Yx()
reactor.callInThread(yx.haha1)
def tt():
for i in xrange(1,11):
yx.haha2()
reactor.callLater(1,tt)
reactor.run()
#####################################
Cannot release an unlocked lock
release 2 error
end2
Cannot release an unlocked lock
release 2 error
end2
Cannot release an unlocked lock
release 2 error
end2
Cannot release an unlocked lock
release 2 error
end2
Cannot release an unlocked lock
release 2 error
end2
Cannot release an unlocked lock
release 2 error
end2
Cannot release an unlocked lock
release 2 error
end2
Cannot release an unlocked lock
release 2 error
end2
Cannot release an unlocked lock
release 2 error
end2
Cannot release an unlocked lock
release 2 error
end2
end1