diff options
author | Sean Reifschneider <jafo@tummy.com> | 2008-05-31 02:56:44 -0600 |
---|---|---|
committer | Sean Reifschneider <jafo@tummy.com> | 2008-05-31 02:56:44 -0600 |
commit | 88a4a25d1f1f5b18f3054d2146c90327a0fd9d97 (patch) | |
tree | 43eb865ab8f06f66992e9681bc487126e21765b2 /memcache.py | |
parent | 2c92db26e8ae5e4c98fa5f22fb340ec083c1ee5b (diff) | |
download | python-memcached-88a4a25d1f1f5b18f3054d2146c90327a0fd9d97.tar.gz |
* Patch from Jehiah Czebotar which does: Changing the calls to
mark_dead() to make them dereference tuples, reducing timeout on
sockets to 3 seconds, settable via setting Host._SOCKET_TIMEOUT.
Diffstat (limited to 'memcache.py')
-rw-r--r-- | memcache.py | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/memcache.py b/memcache.py index b9f5633..5515b20 100644 --- a/memcache.py +++ b/memcache.py @@ -292,7 +292,8 @@ class Client(local): server.send_cmds(''.join(bigcmd)) except socket.error, msg: rc = 0 - server.mark_dead(msg[1]) + if type(msg) is types.TupleType: msg = msg[1] + server.mark_dead(msg) dead_servers.append(server) # if any servers died on the way, don't expect them to respond. @@ -305,6 +306,7 @@ class Client(local): for key in keys: server.expect("DELETED") except socket.error, msg: + if type(msg) is types.TupleType: msg = msg[1] server.mark_dead(msg) rc = 0 return rc @@ -330,7 +332,8 @@ class Client(local): server.send_cmd(cmd) server.expect("DELETED") except socket.error, msg: - server.mark_dead(msg[1]) + if type(msg) is types.TupleType: msg = msg[1] + server.mark_dead(msg) return 0 return 1 @@ -383,7 +386,8 @@ class Client(local): line = server.readline() return int(line) except socket.error, msg: - server.mark_dead(msg[1]) + if type(msg) is types.TupleType: msg = msg[1] + server.mark_dead(msg) return None def add(self, key, val, time = 0, min_compress_len = 0): @@ -555,7 +559,8 @@ class Client(local): write("set %s %d %d %d\r\n%s\r\n" % (key, store_info[0], time, store_info[1], store_info[2])) server.send_cmds(''.join(bigcmd)) except socket.error, msg: - server.mark_dead(msg[1]) + if type(msg) is types.TupleType: msg = msg[1] + server.mark_dead(msg) dead_servers.append(server) # if any servers died on the way, don't expect them to respond. @@ -572,6 +577,7 @@ class Client(local): else: notstored.append(prefixed_to_orig_key[key]) #un-mangle. except (_Error, socket.error), msg: + if type(msg) is types.TupleType: msg = msg[1] server.mark_dead(msg) return notstored @@ -630,7 +636,8 @@ class Client(local): server.send_cmd(fullcmd) return(server.expect("STORED") == "STORED") except socket.error, msg: - server.mark_dead(msg[1]) + if type(msg) is types.TupleType: msg = msg[1] + server.mark_dead(msg) return 0 def get(self, key): @@ -653,8 +660,7 @@ class Client(local): value = self._recv_value(server, flags, rlen) server.expect("END") except (_Error, socket.error), msg: - if type(msg) is types.TupleType: - msg = msg[1] + if type(msg) is types.TupleType: msg = msg[1] server.mark_dead(msg) return None return value @@ -707,7 +713,8 @@ class Client(local): try: server.send_cmd("get %s" % " ".join(server_keys[server])) except socket.error, msg: - server.mark_dead(msg[1]) + if type(msg) is types.TupleType: msg = msg[1] + server.mark_dead(msg) dead_servers.append(server) # if any servers died on the way, don't expect them to respond. @@ -726,6 +733,7 @@ class Client(local): retvals[prefixed_to_orig_key[rkey]] = val # un-prefix returned key. line = server.readline() except (_Error, socket.error), msg: + if type(msg) is types.TupleType: msg = msg[1] server.mark_dead(msg) return retvals @@ -823,13 +831,14 @@ class _Host: if self.socket: return self.socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - # Python 2.3-ism: s.settimeout(1) + if hasattr(s, 'settimeout'): s.settimeout(self._SOCKET_TIMEOUT) try: s.connect((self.ip, self.port)) except socket.timeout, msg: self.mark_dead("connect: %s" % msg) return None except socket.error, msg: + if type(msg) is types.TupleType: msg = msg[1] self.mark_dead("connect: %s" % msg[1]) return None self.socket = s |