在redis和python上支持集群的分布式锁
redistock的Python项目详细描述
重新定位
基于redis和python的一个简单易用、集群支持的分布式锁实现。
安装
pip install redistock
用法
简单用法:
importredisfromredistockimportRedistockredis_conn=redis.StrictRedis(...)# simplelock=Redistock(redis_conn,'name')iflock.acquire():print('Obtained lock')lock.release()# with statementwithRedistock(redis_conn,'name'):print('Obtained lock')
高级用法:
importredisfromredistockimportRedistockfromredistockimportRedistockNotObtainedredis_conn=redis.StrictRedis(...)withRedistock(redis_conn,'name',ttl=1):# will be blocked for 1 secondsprint('Obtained lock')withRedistock(redis_conn,'name',ttl=0.001):# will be blocked for 1 millisecondsprint('Obtained lock')withRedistock(redis_conn,'name',delay=1):# will delay 1 seconds between twice retry, default 0.001print('Obtained lock')lock=Redistock(redis_conn,'name',block=False)# do not retry, raise RedistockNotObtained if not obtained lockiflock.acquire():print('Obtained lock')lock.release()try:withRedistock(redis_conn,'name',timeout=10):# will try to acquire for 10 seconds, success or raise RedistockNotObtained# after 10 secondsprint('Obtained lock')exceptRedistockNotObtained:print('Not obtained lock')