async def fetch(url):
for _ in range(5):
async with aiohttp.request('GET', url) as response:
if response.status == 200:
return await response.text()
else:
return response.status
Бесконечно долбиться по адресу не нужно, иначе в какой-то момент просто положишь скрипт бесконечным циклом, потому что сайт недоступен/404/блок/много чего еще.
sem = asyncio.Semaphore(100)
Объявите в корне файла, а не в функции и передавать его в качестве аргумента не нужно.
Не используйте большое кол-во тасков, ошибки могут быть из-за этого. И если все-же хотите попробовать, то установите ulimit -n 65535