title: Why does aiohttp behaves synchronously?
body: <p>I wrote this script to process a few hundred thousand lines with an localhost API, but the code behaves synchronously.</p>
  <pre><code>  async def process_line_async(session, line):
      async with session.put('http://localhost:8887/load', data=line) as response:
          r = await response.json()
          sys.stdout.write(
              f&quot;some info about the response\n&quot;)
  
    async def looper(lines):
          async with aiohttp.ClientSession() as session:
              tasks = []
              for line in lines:
                  task = asyncio.ensure_future(process_line_async(session, line))
                  tasks.append(task)
              await asyncio.gather(*tasks)
  
  
   asyncio.run(main(lines))
  </code></pre>
  <p>When I test it, or when I modify the process_line_async() function leaving out the request part, with a time.sleep() statement and some arbitrary print, it works but it behaves synchronously</p>