title: Any chance to shield create_task'ed task?
body: <p>I need to shield a task been fired with <code>create_task</code> within an aiohttp handler process like</p>
  <pre><code>async def handler(request):
      asyncio.create_task(long_process())
      return {}, 200
  </code></pre>
  <p>So the code is</p>
  <pre><code>import asyncio
  
  
  async def shielded(coro):
      try:
          await asyncio.shield(coro)
      except asyncio.CancelledError:
          await coro
          raise
  
  
  def create_task(coro) -&gt; asyncio.Task:
      task = asyncio.create_task(shielded(coro))
      return task
  </code></pre>
  <p>But this test</p>
  <pre><code>async def test_create_task_cancel():
      async def coro():
          await asyncio.sleep(1)
          return None
  
      task = create_task(coro())
      await asyncio.sleep(0.1)
      task.cancel()
      await asyncio.sleep(1)
  
      assert task.done() and task.result() is None
  </code></pre>
  <p>with</p>
  <pre><code>RuntimeError: coroutine is being awaited already
  </code></pre>
  <p><code>aiohttp</code> manual suggests to use <code>aiojobs.Scheduler</code>, but it doesn't work as expected
  <a href="https://github.com/aio-libs/aiojobs/issues/148" rel="nofollow noreferrer">https://github.com/aio-libs/aiojobs/issues/148</a>
  <a href="https://github.com/aio-libs/aiojobs/issues/72" rel="nofollow noreferrer">https://github.com/aio-libs/aiojobs/issues/72</a></p>