9

redis db に接続しているクライアントを実行しています。クライアントは 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']

理想的には、私が探しているのは、接続が失われたときにイベントをキャッチし、接続を再確立し、エラーを修正してから、元に戻して実行することです。これはpythonプログラムで行うべきですか?外部ウォッチドッグが必要ですか?

4

2 に答える 2

2

Unfortunately, one have to 'ping' Redis to check if it is available. If You try to put a value to Redis storage, it will raise an ConnectionError exception if connection is lost. But the listen() generator will not close automatically when connection is lost.

I think that hacking Redis' connection pool could help, give it a try.

P.S. In is very insecure to connect to redis in an untrusted network environment.

于 2013-10-04T11:04:40.993 に答える