python使用redis实现协同控制的分布式锁

php中文网
发布: 2016-06-07 16:41:29
原创
1601人浏览过

这两天心情不好,因为感情问题,在这里给朋友们都提个醒! 不要天天code,珍惜身边的人,别你妈天天宅家里,不是代码,就是撸管的。 上午的时候,有个腾讯的朋友问我,关于用zookeeper分布式锁的设计,他的需求其实很简单,就是节点之间的协同合作。 我以前

这两天心情不好,因为感情问题,在这里给朋友们都提个醒! 不要天天code,珍惜身边的人,别你妈天天宅家里,不是代码,就是撸管的。 

上午的时候,有个腾讯的朋友问我,关于用zookeeper分布式锁的设计,他的需求其实很简单,就是节点之间的协同合作。 我以前用redis写过一个网络锁,趁着这个机会就分享了出去。 

http://xiaorui.cc

其实核心的代码就那几行,就是借用redis的expire去set一个key。 

这是一个用redis实现的分布式锁,含有retry和timetout的功能。

麻痹的爬虫呀,哎,说明下原文地址是,http://xiaorui.cc

*   用with做锁的逻辑语句

*   timeout避免了避免了任务出现异常,没有做delete操作

*   对于长时间的业务,增加retry重试锁的次数

#coding:utf-8
#my blog: http://xiaorui.cc
from __future__ import with_statement
import redis
import time
from redis_netlock import dist_lock
client = redis.Redis(connection_pool=redis.BlockingConnectionPool(max_connections=15, host='localhost', port=6379))
with dist_lock('test', client):
    time.sleep(10)
    print 'welcome to my blog, http://xiaorui.cc'
登录后复制


同时运行test.py and test2.py

python test.py

root@li568-252 redis_netlock]# python test.py
welcome to my blog, http://xiaorui.cc
登录后复制

python test2.py

[root@li568-252 redis_netlock]# python test2.py
Sleeipng for 0.404031367603
Sleeipng for 1.19347232007
Sleeipng for 2.47668271021
Sleeipng for 4.55280708824
hello
登录后复制

已经把redis_netlock提交到了pypi项目里面。 

pip install redis_netlock
登录后复制


下面是redis_netlock的git地址。

Git版本控制与工作流 中文WORD版
Git版本控制与工作流 中文WORD版

篇文章是针对git版本控制和工作流的总结,如果有些朋友之前还没使用过git,对git的基本概念和命令不是很熟悉,可以从以下基本教程入手: Git是分布式版本控制系统,与SVN类似的集中化版本控制系统相比,集中化版本控制系统虽然能够令多个团队成员一起协作开发,但有时如果中央服务器宕机的话,谁也无法在宕机期间提交更新和协同开发。甚至有时,中央服务器磁盘故障,恰巧又没有做备份或备份没及时,那就可能有丢失数据的风险。感兴趣的朋友可以过来看看

Git版本控制与工作流 中文WORD版 0
查看详情 Git版本控制与工作流 中文WORD版
git clone https://github.com/rfyiamcool/redis_netlock.git
登录后复制
相关标签:
python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号