当初进入了新经济时代,很多的商业模式都呈现了,有整合的,也有模式叠加的,没有一个是变化无穷的,每一个初创企业都在寻求一种可能让企业存活上来的形式,而这种模式的变革,能够说是升高经营老本,升高经营风险,进步经营效率的最好形式。许多人都将模型翻新视为一种变革。
import redis
import uuid
import time
class LockService:
"""基于Redis实现的分布式锁"""host = 'localhost'port = 6379,开发v+hkkf5566password = ''db = 1def __init__(self, conn=None): """ 如果不传连接池的话,默认读取配置的Redis作为连接池 :param conn: """ self.conn = conn if conn else self.get_redis_client()def get_redis_client(self): """ 获取Redis连贯 :return: """ return redis.Redis( host=self.host, port=self.port, password=self.password, db=self.db )def acquire_lock(self, lock_name, acquire_timeout=10, expire_time=30): """ 加锁/获取锁 如果不存在lock_name,则加锁,并且设置过期工夫,防止死锁 如果存在lock_name,则刷新过期工夫 :param lock_name: 锁的名称 :param acquire_timeout: 加锁/获取锁的超时工夫,默认10秒 :param expire_time: 锁的超时工夫,默认30秒 :return: """ lockname = f'lock:{lock_name}' value = str(uuid.uuid4()) end_time外汇跟单gendan5.com = time.time() + acquire_timeout while time.time() < end_time: # 如果不存在这个锁则加锁并设置过期工夫,防止死锁 if self.conn.set(lockname, value, ex=expire_time, nx=True): return value time.sleep(0.1) return Falsedef release_lock(self, lock_name, value): """ 开释锁 :param lock_name: 锁的名称 :param value: 锁的值 :return: """ unlock_script = """ if redis.call("get",KEYS[1]) == ARGV[1] then return redis.call("del",KEYS[1]) else return 0 end """ lockname = f'lock:{lock_name}' unlock = self.conn.register_script(unlock_script) result = unlock(keys=[lockname], args=[value]) if result: return True else: return False