channy14

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

浮动等待达到某一条件

 

def wait_until_expect_redis_result(redis_key, interval=1, max_waittime=30, expect_result='exist',redis_ip='127.48.167.201',redis_port=9052):
    """
    浮动等待redis队列为期待的结果
    :param redis_key: 如cache:task:expirefile:expired-redis
    :param interval:
    :param max_waittime:
    :param expect_result: exist/notexist
    :return:
    """
    print u'redis_ip:',redis_ip,u'redis_port:',redis_port
    wait_time = 0
    flag = ''
    times = int(max_waittime/interval)
    r = redis.Redis(host=redis_ip,port=redis_port,password='WCS_REDIS_!(0)')
    print u'redis_key: ',redis_key
    print u"获取当前redis队列中是否存在指定队列:"
    for i in range(0, times):
        redisQueue = r.keys(redis_key)
        print i,redisQueue
        if redisQueue == []:
            flag = 'notexist'
        else:
            flag = 'exist'
        if flag == expect_result:
            print u'\nSuccess. 当前redis队列[%s],和期望的[%s]一致,等待总时长:%s' %(flag, expect_result, wait_time)
            return redisQueue
        time.sleep(interval)
        wait_time = wait_time + interval
    print u"\nError. 当前redis队列[%s],和期望的[%s]不一致,已到达允许等待最大时长:%s" % (flag, expect_result, max_waittime)
    raise AssertionError(u'Fail.')
View Code

 

posted on 2021-05-19 14:22  channy14  阅读(42)  评论(0)    收藏  举报