Python asyncio / aiohttp: ValueError: muitos descritores de arquivo em select () no Windows

Olá pessoal, Estou tendo problemas para tentar entender asyncio e aiohttp e fazer com que ambos funcionem juntos corretamente. Não apenas eu não entendo direito o que estou fazendo, mas também encontrei um problema que não tenho idéia de como resolver.

Estou usando o Windows 10 64 bits, atualização mais recente.

O código a seguir retorna uma lista de páginas que não contêm html no Content-Type no cabeçalho usando asyncio.

import asyncio
import aiohttp

MAXitems = 30

async def getHeaders(url, session, sema):
    async with session:
        async with sema:
            try:
                async with session.head(url) as response:
                    try:
                        if "html" in response.headers["Content-Type"]:
                            return url, True
                        else:
                            return url, False
                    except:
                        return url, False
            except:
                return url, False


def checkUrlsWithoutHtml(listOfUrls):
    headersWithoutHtml = set()
    while(len(listOfUrls) != 0):
        blockurls = []
        print(len(listOfUrls))
        items = 0
        for num in range(0, len(listOfUrls)):
            if num < MAXitems:
                blockurls.append(listOfUrls[num - items])
                listOfUrls.remove(listOfUrls[num - items])
                items +=1
        loop = asyncio.get_event_loop()
        semaphoreHeaders = asyncio.Semaphore(50)
        session = aiohttp.ClientSession()
        data = loop.run_until_complete(asyncio.gather(*(getHeaders(url, session, semaphoreHeaders) for url in blockurls)))
        for header in data:
            if False == header[1]:
                headersWithoutHtml.add(header)
    return headersWithoutHtml


listOfUrls = ['http://www.google.com', 'http://www.reddit.com']
headersWithoutHtml=  checkUrlsWithoutHtml(listOfUrls)

for header in headersWithoutHtml:
    print(header[0])

Quando eu executo, digamos, 2000 URLs (às vezes), ele retorna algo como:

data = loop.run_until_complete(asyncio.gather(*(getHeaders(url, session, semaphoreHeaders) for url in blockurls)))
  File "USER\AppData\Local\Programs\Python\Python36-32\lib\asyncio\base_events.py", line 454, in run_until_complete
    self.run_forever()
  File "USER\AppData\Local\Programs\Python\Python36-32\lib\asyncio\base_events.py", line 421, in run_forever
    self._run_once()
  File "USER\AppData\Local\Programs\Python\Python36-32\lib\asyncio\base_events.py", line 1390, in _run_once
    event_list = self._selector.select(timeout)
  File "USER\AppData\Local\Programs\Python\Python36-32\lib\selectors.py", line 323, in select
    r, w, _ = self._select(self._readers, self._writers, [], timeout)
  File "USER\AppData\Local\Programs\Python\Python36-32\lib\selectors.py", line 314, in _select
    r, w, x = select.select(r, w, w, timeout)
ValueError: too many file descriptors in select()

Nota 1: Editei meu nome com USER no usuário.

Nota 2: Por qualquer motivo que o reddit.com retorne, pois não contém HTML, esse é um problema completamente separado que tentarei resolver, no entanto, se você notar alguma outra inconsistência no meu código que resolveria isso, indique-o.

Nota 3: Meu código está mal construído porque tentei mudar muitas coisas para tentar depurar esse problema, mas não tenho sorte.

Ouvi em algum lugar que isso é uma restrição do Windows e não há como contorná-lo, o problema é o seguinte:

a) Eu não entendo diretamente o que significa "muitos descritores de arquivo em select ()".

b) O que estou fazendo de errado que o Windows não consegue lidar? Já vi pessoas enviando milhares de solicitações com asyncio e aiohttp, mas mesmo com meu chuncking não consigo enviar 30-50 sem obter um erro de valor?

Editar: Acontece que com MAXitems = 10, ele ainda não me deixou de funcionar, mas como não consigo seguir o padrão, não faço ideia do porquê ou como isso me diz alguma coisa.

Edit2: Deixa pra lá, precisava de mais tempo para travar, mas acabou mesmo com MAXitems = 10