﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
20584	Memcached backend's get_many() fail with single-use iterators	guyon.moree@…	Christian Barcenas	"When the `keys` parameter to `get_many()` is an iterator, its values will be consumed in a list comprehension. However, later the already-consumed iterator is then passed to `zip`.

https://github.com/django/django/blob/master/django/core/cache/backends/memcached.py#L90

This causes a very confusing `KeyError` which is raised when the cache backend attempts to map lower-level Memcache-backend cache keys back to higher-level Djanco cache keys. 

{{{
Traceback (most recent call last):
  File ""[snip]/django/tests/cache/tests.py"", line 1345, in test_get_many_accepts_iterator
    values = cache.get_many(iter(['fizz']))
  File ""[snip]/django/lib/python3.6/site-packages/Django-2.2.dev20180706090656-py3.6.egg/django/core/cache/backends/memcached.py"", line 91, in get_many
    return {m[k]: v for k, v in ret.items()}
  File ""[snip]/django/lib/python3.6/site-packages/Django-2.2.dev20180706090656-py3.6.egg/django/core/cache/backends/memcached.py"", line 91, in <dictcomp>
    return {m[k]: v for k, v in ret.items()}
KeyError: ':1:fizz'
}}}"	Bug	closed	Core (Cache system)	dev	Normal	fixed			Ready for checkin	1	0	0	0	0	0
