Быстрая отработка запросов python

Нужно при парсинге, отправить около 4.000 запросов, но если делать это с помощью процессов, то из-за долгого ответа сервера, падает все и парсится дольше обычного, но я прочитал, про аiohttp, что там можно ограничить одновременное кол-во запросов, но у меня так и не вышло, я не смог передать json параметры в запрос, кто может помогите!

import json
import asyncio
import aiohttp

conn = aiohttp.TCPConnector(limit_per_host=100, limit=0, ttl_dns_cache=300)
PARALLEL_REQUESTS = 100
results = []
urls = ['https://ru.stackoverflow.com' for i in range(50)]


async def gather_with_concurrency(n):
    semaphore = asyncio.Semaphore(n)
    session = aiohttp.ClientSession(connector=conn)

    async def get(url):
        async with semaphore:
            async with session.get(url, ssl=False) as response:
                obj = json.loads(await response.read())
                print(obj)
                results.append(obj)

    await asyncio.gather(*(get(url) for url in urls))
    await session.close()
    loop = asyncio.get_event_loop()
    loop.run_until_complete(gather_with_concurrency(PARALLEL_REQUESTS))
    # conn.close()

Ответы (0 шт):