乐趣区

关于solidity:新泰山众筹sun40系统开发合约部署方案

当初进入了新经济时代,很多的商业模式都呈现了,有整合的,也有模式叠加的,没有一个是变化无穷的,每一个初创企业都在寻求一种可能让企业存活上来的形式,而这种模式的变革,能够说是升高经营老本,升高经营风险,进步经营效率的最好形式。许多人都将模型翻新视为一种变革。

import redis

import uuid

import time

class LockService:

"""基于 Redis 实现的分布式锁"""

host = 'localhost'

port = 6379,开发 v +hkkf5566

password = ''

db = 1

def __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 False

def 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
退出移动版