summaryrefslogtreecommitdiff
path: root/memcache.py
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 /memcache.py
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
Diffstat (limited to 'memcache.py')
-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():