从redis pub/sub中的连接断开中恢复

Ale*_*xis 6 python redis redistogo

我正在运行连接到redis数据库的客户端.客户端使用WiFi连接,有时会断开连接.不幸的是,当发生这种情况时,程序会继续运行而不会抛出任何类型的警告.

r = redis.StrictRedis(host=XX, password=YY...)
ps = r.pubsub()
ps.subscribe("12345")
for items in ps.listen():
    if items['type'] == 'message':
       data = items['data']
Run Code Online (Sandbox Code Playgroud)

理想情况下,我所寻求的是一个包罗万象的事件时,连接丢失,尝试重新建立连接,做一些纠错,然后把事情备份和运行.这应该在python程序中完成吗?我应该有外部看门狗吗?

saa*_*lin 2

不幸的是,我们必须“ping”Redis 来检查它是否可用。如果您尝试向 Redis 存储中写入值,ConnectionError如果连接丢失,则会引发异常。但是当连接丢失时,listen() 生成器不会自动关闭。

我认为破解 Redis 的连接池可能会有所帮助,请尝试一下。

PS In 在不可信的网络环境下连接redis是非常不安全的。