title: Scheduled tasks in ensure_future are overlapping by the last one
body: <p>I need a new handler that use another existing handler for processing multiple requests at once:</p>
  
  <pre><code>async def process_multiple_queries(request):
      init_request = request.clone()
      body = await request.json()
  
      for query in body["queries"]:
  
          @asyncio.coroutine
          def fake_json(self):
              return query
  
          # Replace request body on new fake json
          R = init_request.clone()
          R.json = fake_json.__get__(R, Request)
  
          # Process request in the background task
          asyncio.ensure_future(process_query(R))
  
  async def process_query(request):
      body = await request.json()
      # ... Process body ...
      return web.json_response({"result": "OK"})
  </code></pre>
  
  <p>However, results of all scheduled tasks are equal to the result of the last task, i.e. bodies of all requests passed in <code>process_query</code> are equal only to the body of the last request.</p>
  
  <p>But if I add <code>asyncio.sleep(5)</code> after <code>asyncio.ensure_future(process_query(R))</code>, all tasks are processed properly and produce different results.</p>
  
  <p>How to fix it?</p>