redis 加锁和释放锁只能再同一个线程进行
""" @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