Exemplo n.º 1
0
    def lock(self, timeout=5):
        key = "{0}:{1}".format(self.key, server.id)

        t = 0
        while True:
            if t > timeout:
                raise LockTimeOut()

            # 程序期望获取到锁的等待时间是timeout
            # 那么这个锁的过期时间就简单设置成 timeout+1
            # 过期时间可以理解为程序期望获得锁以后,直到释放锁的运行时间
            # 不太可能会有这样的需求: 我期望等待10秒,但获取到锁后,只运行1秒
            # 或者 我期望等待1秒,但是获取到锁以后 要运行10秒
            # 一般都是 等待时间,于期望运行时间差不多
            result = redis_client.set(key, 1, ex=timeout + 1, nx=True)
            if result:
                # got the lock
                break

            time.sleep(self.INTERVAL)
            t += self.INTERVAL

        try:
            yield
        finally:
            redis_client.delete(key)
Exemplo n.º 2
0
    def lock(self, timeout=5):
        key = "{0}:{1}".format(self.key, server.id)

        t = 0
        while True:
            if t > timeout:
                raise LockTimeOut()

            # 程序期望获取到锁的等待时间是timeout
            # 那么这个锁的过期时间就简单设置成 timeout+1
            # 过期时间可以理解为程序期望获得锁以后,直到释放锁的运行时间
            # 不太可能会有这样的需求: 我期望等待10秒,但获取到锁后,只运行1秒
            # 或者 我期望等待1秒,但是获取到锁以后 要运行10秒
            # 一般都是 等待时间,于期望运行时间差不多
            result = redis_client.set(key, 1, ex=timeout+1, nx=True)
            if result:
                # got the lock
                break

            time.sleep(self.INTERVAL)
            t += self.INTERVAL

        try:
            yield
        finally:
            redis_client.delete(key)
Exemplo n.º 3
0
def message_get(char_id):
    key = 'noti:{0}'.format(char_id)
    msgs = redis_client.lrange(key, 0, -1)
    redis_client.delete(key)
    return msgs
Exemplo n.º 4
0
def message_clean(char_id):
    key = 'noti:{0}'.format(char_id)
    redis_client.delete(key)
Exemplo n.º 5
0
def delete(key):
    redis_client.delete(key)
Exemplo n.º 6
0
def delete(key):
    redis_client.delete(key)
Exemplo n.º 7
0
def message_get(char_id):
    key = 'noti:{0}'.format(char_id)
    msgs = redis_client.lrange(key, 0, -1)
    redis_client.delete(key)
    return msgs
Exemplo n.º 8
0
def message_clean(char_id):
    key = 'noti:{0}'.format(char_id)
    redis_client.delete(key)
Exemplo n.º 9
0
def message_clean(char_id):
    key = keygen(char_id)
    redis_client.delete(key)
Exemplo n.º 10
0
def message_get(char_id):
    key = keygen(char_id)
    msgs = redis_client.lrange(key, 0, -1)
    redis_client.delete(key)
    return msgs
Exemplo n.º 11
0
def message_clean(char_id):
    key = keygen(char_id)
    redis_client.delete(key)
Exemplo n.º 12
0
def message_get(char_id):
    key = keygen(char_id)
    msgs = redis_client.lrange(key, 0, -1)
    redis_client.delete(key)
    return msgs