title: how to cache asyncio coroutines
body: <p>I am using <a href="https://aiohttp.readthedocs.org" rel="noreferrer">aiohttp</a> to make a simple HTTP request in python 3.4 like this:</p>
  
  <pre><code>response = yield from aiohttp.get(url)
  </code></pre>
  
  <p>The application requests the same URL over and over again so naturally I wanted to cache it. My first attempt was something like this:</p>
  
  <pre><code>@functools.lru_cache(maxsize=128)
  def cached_request(url):
      return aiohttp.get(url)
  </code></pre>
  
  <p>The first call to <code>cached_request</code> works fine, but in later calls I end up with <code>None</code> instead of the response object.</p>
  
  <p>I am rather new to asyncio so I tried a lot of combinations of the <code>asyncio.coroutine</code> decorator, <code>yield from</code> and some other things, but none seemed to work.</p>
  
  <p>So how does caching coroutines work?</p>