From c9c6c166506bec59c57d4e3389e7ccd552e47ffc Mon Sep 17 00:00:00 2001 From: Christian Barcenas Date: Fri, 6 Jul 2018 11:03:58 -0700 Subject: Fixed #20584 -- Fixed memcached's get_many() with single-use iterators. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Thanks Guyon Morée for the report. --- django/core/cache/backends/memcached.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'django/core/cache') 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. -- cgit v1.3