您的位置:首页 > 数据库 > Redis

python 实现 redis 分布式锁

2017-07-28 18:09 204 查看
from contextlib import contextmanager
from random import random

DEFAULT_EXPIRES = 15
DEFAULT_RETRIES = 5

@contextmanager
def dist_lock(key, client):
key = 'lock_%s' % key

try:
t = _acquire_lock(key, client)
yield t
finally:
_release_lock(key, client)

def ask_lock(key,client):
key = 'lock_%s' % key
if client.get(key):
return True
else:
return False

def _acquire_lock(key, client):
while 1:
get_stored = client.get(key)
if get_stored:
time.sleep(0.03)
else:
if client.setnx(key, 1):
client.expire(key,DEFAULT_EXPIRES)
return True
return False

def _release_lock(key, client):
client.delete(key)


可以直接 pip install redis_netlock

出自 :https://github.com/rfyiamcool/redis_netlock
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: