首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python -如何检查Redis服务器是否可用

Python -如何检查Redis服务器是否可用
EN

Stack Overflow用户
提问于 2012-10-12 18:59:52
回答 7查看 69.5K关注 0票数 42

我正在开发一个用于访问Redis服务器的Python服务(类)。我想知道如何检查Redis Server是否正在运行。还有,如果我不能连接到它。

下面是我的代码的一部分

代码语言:javascript
复制
import redis
rs = redis.Redis("localhost")
print rs

它输出以下内容

代码语言:javascript
复制
<redis.client.Redis object at 0x120ba50>

即使我的Redis服务器没有运行。

因为我发现只有在对redis实例执行set()或redis get()时,Python代码才会连接到服务器。

所以我不想让其他使用我的类的服务得到一个异常

代码语言:javascript
复制
redis.exceptions.ConnectionError: Error 111 connecting localhost:6379. Connection refused.

我想返回正确的消息/错误代码。我该怎么做呢??

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-10-19 14:38:54

检查redis服务器可用性的官方方法是ping ( http://redis.io/topics/quickstart )。

一种解决方案是将redis子类化,然后做两件事:

在发出请求时没有连接的情况下,instantiation

  • write上的
  1. 检查连接是一个异常处理程序
票数 35
EN

Stack Overflow用户

发布于 2012-10-12 21:23:26

如果您想在启动时测试一次redis连接,请使用ping()命令。

代码语言:javascript
复制
from redis import Redis

redis_host = '127.0.0.1'
r = Redis(redis_host, socket_connect_timeout=1) # short timeout for the test

r.ping() 

print('connected to redis "{}"'.format(redis_host)) 

命令ping()检查连接,如果无效,将引发异常。

  • 注意-在您执行测试后,连接仍可能失败,因此这不会掩盖稍后的超时异常。
票数 29
EN

Stack Overflow用户

发布于 2012-10-12 21:37:12

正如您所说,只有当您尝试在服务器上执行命令时,才会建立到Redis服务器的连接。如果您不想在不检查服务器是否可用的情况下继续前进,您可以只向服务器发送一个随机查询并检查响应。类似于:

代码语言:javascript
复制
try:
    response = rs.client_list()
except redis.ConnectionError:
    #your error handlig code here    
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12857604

复制
相关文章

相似问题

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