summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Maynard <glenn@zewt.org>2014-02-06 16:35:57 -0600
committerGlenn Maynard <glenn@zewt.org>2014-02-06 16:35:57 -0600
commit43a7ebb87d0c16d842a8b4cdfe3f00b26a2f277c (patch)
treefb2037439ca2db1125ec0e43bf4db6eee4590d78
parent794b02811d8c6fdad304955a4602fb1324270f95 (diff)
downloadpython-memcached-43a7ebb87d0c16d842a8b4cdfe3f00b26a2f277c.tar.gz
Allow specifying an empty server list.
If the server list is empty, behave the same as if all servers are down. This allows clients to not care whether memcache is actually in use: mc = memcache.Client(get_my_memcache_servers()) mc.get('cache') If you're not using memcache at all, get_my_memcache_servers() just returns [], and the client code doesn't need to know the difference. Previously, it would fail: >>> mc = memcache.Client([]) >>> mc.get('x') File "memcache.py", line 353, in _get_server server = self.buckets[serverhash % len(self.buckets)] ZeroDivisionError: integer division or modulo by zero
-rw-r--r--memcache.py3
1 files changed, 3 insertions, 0 deletions
diff --git a/memcache.py b/memcache.py
index db8e632..5a65d55 100644
--- a/memcache.py
+++ b/memcache.py
@@ -352,6 +352,9 @@ class Client(local):
else:
serverhash = serverHashFunction(key)
+ if not self.buckets:
+ return None, None
+
for i in range(Client._SERVER_RETRIES):
server = self.buckets[serverhash % len(self.buckets)]
if server.connect():