diff options
author | Glenn Maynard <glenn@zewt.org> | 2014-02-06 16:35:57 -0600 |
---|---|---|
committer | Glenn Maynard <glenn@zewt.org> | 2014-02-06 16:35:57 -0600 |
commit | 43a7ebb87d0c16d842a8b4cdfe3f00b26a2f277c (patch) | |
tree | fb2037439ca2db1125ec0e43bf4db6eee4590d78 | |
parent | 794b02811d8c6fdad304955a4602fb1324270f95 (diff) | |
download | python-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.py | 3 |
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(): |