Как обойти отклонение сетевого подключения при множестве запросов
У меня есть однопоточный http сервер на python (HTTPServer из встроенной либы), на который приходят запросы. На сервере при обработке запроса стоит time.sleep(2), сервер заполняет очередь запросов для исполнителей, при попытке завалить его запросами с помощью asyncio сервер отклоняет подключение. (Такая странная реализация нужна чтобы показать разницу между однопоточным, многопоточным и асинхронным сервером, лабораторка).
Я только начал изучать асинхр, в моем понимании на стороне клиента должно было создастся n тасков для запроса, а сервер должен был по мере своих сил обработать
код клиента
async def create():
data = {
"org_name": "sampleName",
"date": "21.04.2023",
"product_list": [["ProductA", 1, 4059], ["ProductB", 3, 5930], ["ProductC", 5, 3444]]
}
async with aiohttp.ClientSession() as session:
async with session.post("http://localhost:8080/", json=data) as res:
return await res.json()
async def main():
tasks = []
for number in range(25):
tasks.append(asyncio.create_task(create()))
result = await asyncio.gather(*tasks)
print(result)
asyncio.run(main())
На стороне клиента появляется ошибка ConnectionRefusedError: [WinError 1225] Удаленный компьютер отклонил это сетевое подключение
На стороне сервера же ConnectionAbortedError: [WinError 10053] Программа на вашем хост-компьютере разорвала установленное подключение
Несколько запросов все таки доходят до сервера и он их обрабатывает, однако клиент не получает никакого ответа.
Клиент и сервер находятся на одной машине. Файрволл отключен
Возможно ли как то обойти эту ошибку? Нужно как можно нагляднее показать, что клиент может отправлять запросы быстро, однако однопоточный сервер будет тормозить и обрабатывать их по одному