Параллельные запросы зависают.Вот пример кода, который я использую для тестирования одновременных запросов.
import aiohttp
import asyncio
async def fetch(session, url):
async with session.get(url) as response:
print(await response.text())
async def main(n):
url = "https://httpstat.us/200"
async with aiohttp.ClientSession() as session:
tasks = [asyncio.create_task(fetch(session, url)) for _ in range n]
await asyncio.gather(*tasks)
asyncio.run(main(10))
Когда я делаю 10 одновременных запросов, первые 4-5 запросов выполняются одновременно, а затем он зависает в течение более 10 секунд, а затем запускаетсяостальные задачи, которые снова зависают после выполнения 2-3 параллельных запросов.Если я делаю 100 одновременных запросов, он делает около 25-30 одновременных запросов и зависает, а затем делает 5-6 запросов и снова зависает, он делает это до тех пор, пока все задачи не будут выполнены.
Это займет более двух минутсделать 100 запросов к https://httpstat.us/200
с помощью aiohttp.
Если я не использую постоянный ClientSession
и создаю новый ClientSession
для каждого запроса, то все сотни запросов завершаются в течение 5 секунд, не зависая.
Я не уверен, что я здесь делаю.Любая помощь будет высоко оценена.