Быстрая отработка запросов 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()