首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当连接断开时重试Redis操作

当连接断开时重试Redis操作
EN

Stack Overflow用户
提问于 2014-07-16 13:50:30
回答 1查看 3.7K关注 0票数 3

我想写代码将数据插入到Redis中。首先,它应该连接Redis服务器并在失败时重试。一旦连接,它就应该执行诸如hset()set()之类的命令。如果连接中断,我如何重试这些命令?

这就是我到目前为止所拥有的,它只是在连接步骤中处理重试。

代码语言:javascript
复制
while cnt < 11:
    try:
        r.ping()
        break

    except redis.ConnectionError:
        time_sleep = cnt * 5
        time.sleep(time_sleep)
        r = redis.Redis(host='10.23.*.*', port=6379, db=0)
        cnt += 1
        print cnt
if cnt == 11:
     sys.exit(-1)
r.hset(field,keys,1)
EN

回答 1

Stack Overflow用户

发布于 2014-07-16 14:21:43

您可以扩展最初的计数器概念,将其应用于任何操作。

代码语言:javascript
复制
max_retries = 10
count = 0

r = redis.Redis(host='10.23.*.*', port=6379, db=0)

def try_command(f, *args, **kwargs):
    while True:
        try:
            return f(*args, **kwargs)
        except redis.ConnectionError:
            count += 1

            # re-raise the ConnectionError if we've exceeded max_retries
            if count > max_retries:
                raise

            backoff = count * 5

            print('Retrying in {} seconds'.format(backoff)
            time.sleep(backoff)

            r = redis.Redis(host='10.23.*.*', port=6379, db=0)

# this will retry until a result is returned
# or will re-raise the final ConnectionError
try_command(r.hset, field, keys, 1)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24773114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档