在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')

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
安卓如何在java字符串中获取RATE的值   java ANT在哪里输出编译器错误?   在java中,while循环在何处启动对象   javacom。谷歌。格森。内部的LinkedTreeMap无法强制转换到我的类   java单选按钮。isSelected()方法未返回正确的响应   嵌入式系统中applet中的java相对码基字段   如何在eclipse中将Java应用程序附加到jvm探查器?   java为什么Android应用程序崩溃?   在java中拖放上传后保持文件夹结构   爪哇多领导人选举问题   java Springs RestTemplate如何处理postForEntity()中的错误响应   Java如何用前导零递增整数字符串?   java Android将文本作为图像共享给其他应用程序   Java搜索替换   java isDirectory()不适用于UNIX目录   java我们可以得到显示测试类是否通过或失败的TestNG报告吗   Java类对象排序和分组   简单Java幂递归   java在处理MethodArgumentNotValidException时如何访问请求对象?