在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我试图使用Ajax获取数据库内容并显示,但我看到了这个错误   Java堆栈ORM与数据库可伸缩性   具有两个观察者列表的java观察者模式   java需要Selenium框架公共函数来实现下一个元素的可见性   corba如何在Java中使ContextList序列长度为3到序列长度为0   java为什么Struts检测到未处理的异常?   java myLooper()在异步任务期间不会退出   验证我需要编写一个包含特殊字符和0到9的数字的java字符串来验证密码   Android WebView中的java地理位置权限   java X509证书路径验证   IntelliJ IDEA,在format/save(JAVA)上关闭在实例变量之前插入'final'关键字   安卓中java在20秒后终止无限循环   java Spotbugs构建问题   java如何在OSGi中实现ManagedServiceFactory?   java加载从php脚本创建的png文件   java将字符数组复制到字符数组中   java如何序列化使用Jackson扩展TreeSet的类?   java有什么方法可以计算HashSet中落在同一个Bucket中的元素数吗   java无法初始化类org。阿帕奇。轴客户即使axis jar在那里,AxisClient也会被抛出