在下面的代码中,管道超时是2秒?
client = redis.StrictRedis(host=host, port=port, db=0, socket_timeout=2) pipe = client.pipeline(transaction=False) for name in namelist: key = "%s-%s-%s-%s" % (key_sub1, key_sub2, name, key_sub3) pipe.smembers(key) pipe.execute()
在redis中,set"key"中有很多成员.它始终返回错误,如下所示:
error Error while reading from socket: ('timed out',)
如果我将socket_timeout值修改为10,则返回ok.
参数"socket_timeout"不是指连接超时吗?但它看起来像响应超时.
redis-py版本是2.6.7.
我在github上问了redis-py的作者andymccurdy,答案如下:
如果您使用的是redis-py <= 2.9.1,则socket_timeout既是套接字连接的超时,也是读取/写入套接字的超时.我最近推了一个更改(465e74d),引入了一个新选项socket_connect_timeout.这允许您为socket.connect()指定不同的超时值,与socket.send/socket.recv()不同.此更改将包含在2.10中,该版本将于本周晚些时候发布.
redis-py版本是2.6.7,因此它既是套接字连接的超时,也是读取/写入套接字的超时.