title: aiohttp client_exception ServerDisconnectedError - is this the API server's issue or aiohttp or my code?
body: <p>I'm getting an aiohttp client_exception.ServerDisconnectedError whenever I do more than ~200 requests to an API I'm hitting using asyncio &amp; aiohttp. It doesn't seem to be my code because it works consistently with smaller number of requests, but fails on any larger number. Trying to understand if this error is related to aiohttp, or my code, or with the API endpoint itself? There doesn't seem to be much info online around this.</p>
  
  <pre><code>  Traceback (most recent call last):
    File "C:/usr/PycharmProjects/api_framework/api_framework.py", line 27, in &lt;module&gt;
      stuff = abc.do_stuff_2()
    File "C:\usr\PycharmProjects\api_framework\api\abc\abc.py", line 72, in do_stuff
      self.queue_manager(self.do_stuff(json_data))
    File "C:\usr\PycharmProjects\api_framework\api\abc\abc.py", line 115, in queue_manager
      loop.run_until_complete(future)
    File "C:\Python36x64\lib\asyncio\base_events.py", line 466, in run_until_complete
      return future.result()
    File "C:\usr\PycharmProjects\api_framework\api\abc\abc.py", line 96, in do_stuff
      result = await asyncio.gather(*tasks)
    File "C:\usr\PycharmProjects\api_framework\api\abc\abc.py", line 140, in async_post
      async with session.post(self.api_attr.api_endpoint + resource, headers=self.headers, data=data) as response:
    File "C:\Python36x64\lib\site-packages\aiohttp\client.py", line 843, in __aenter__
      self._resp = await self._coro
    File "C:\Python36x64\lib\site-packages\aiohttp\client.py", line 387, in _request
      await resp.start(conn)
    File "C:\Python36x64\lib\site-packages\aiohttp\client_reqrep.py", line 748, in start
      message, payload = await self._protocol.read()
    File "C:\Python36x64\lib\site-packages\aiohttp\streams.py", line 533, in read
      await self._waiter
  aiohttp.client_exceptions.ServerDisconnectedError: None
  </code></pre>
  
  <p>here's some of the code to generate the async requests:</p>
  
  <pre><code>    def some_other_method(self):
          self.queue_manager(self.do_stuff(all_the_tasks))
  
      def queue_manager(self, method):
          print('starting event queue')
          loop = asyncio.get_event_loop()
          future = asyncio.ensure_future(method)
          loop.run_until_complete(future)
          loop.close()
  
      async def async_post(self, resource, session, data):
          async with session.post(self.api_attr.api_endpoint + resource, headers=self.headers, data=data) as response:
              resp = await response.read()
          return resp
  
      async def do_stuff(self, data):
          print('queueing tasks')
  
          tasks = []
          async with aiohttp.ClientSession() as session:
              for row in data:
                  task = asyncio.ensure_future(self.async_post('my_api_endpoint', session, row))
                  tasks.append(task)
              result = await asyncio.gather(*tasks)
              self.load_results(result)
  </code></pre>
  
  <p>Once the tasks have completed, self.load_results() method just parses the json and updates the DB.</p>