summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorChristian Barcenas <christian@cbarcenas.com>2018-07-06 11:03:58 -0700
committerTim Graham <timograham@gmail.com>2018-07-09 10:24:41 -0400
commitc9c6c166506bec59c57d4e3389e7ccd552e47ffc (patch)
tree468b7c9840f70cf359a6b9c9475217e0baef64cd /django
parent38e904e26576abffed3c257a1a741e1641c6f2de (diff)
Fixed #20584 -- Fixed memcached's get_many() with single-use iterators.
Thanks Guyon Morée for the report.
Diffstat (limited to 'django')
-rw-r--r--django/core/cache/backends/memcached.py9
1 files changed, 3 insertions, 6 deletions
diff --git a/django/core/cache/backends/memcached.py b/django/core/cache/backends/memcached.py
index 1c8066ba03..bb27cb53bb 100644
--- a/django/core/cache/backends/memcached.py
+++ b/django/core/cache/backends/memcached.py
@@ -84,12 +84,9 @@ class BaseMemcachedCache(BaseCache):
self._cache.delete(key)
def get_many(self, keys, version=None):
- new_keys = [self.make_key(x, version=version) for x in keys]
- ret = self._cache.get_multi(new_keys)
- if ret:
- m = dict(zip(new_keys, keys))
- return {m[k]: v for k, v in ret.items()}
- return ret
+ key_map = {self.make_key(key, version=version): key for key in keys}
+ ret = self._cache.get_multi(key_map.keys())
+ return {key_map[k]: v for k, v in ret.items()}
def close(self, **kwargs):
# Many clients don't clean up connections properly.