Я изо всех сил пытаюсь найти много документации по aiohttp , особенно недавнюю. Я продолжаю просматривать одни и те же несколько страниц снова и снова, в основном проблемы с github и документацию, и не могу найти ключ к моей проблеме.
Проблема заключается в том, что при выполнении большого количества запросов ожидающие один тайм-аут, прежде чем они будут отправлены.
Это связано с тем, что для запроса ( session.get () ) по умолчанию установлено время ожидания 5 минут, которое отсчитывается с момента ожидания сделано, а не фактический запрос, если я хорошо понимаю. Таким образом, я заблокирован, потому что если оставить фиксированный тайм-аут, то все ожидающие запросы будут отменены (timeout) после этого времени или если timeout установлен на Нет заставит программу ждать бесконечно на не отвечающих сайтах. Та же проблема возникает в этой проблеме , но я не могу обойти ее.
Вот мой ошибочный код:
async def request(session, url):
try:
resp = await session.get(url)
except:
"FAIL"
else:
"SUCCESS"
async def session():
urls = loadUrls()
coros = []
async with aiohttp.ClientSession() as session:
for url in urls:
coros.append(request(session, url))
await asyncio.gather(*coros, return_exceptions=True)
def main():
loop = asyncio.new_event_loop()
loop.run_until_complete((session()))
loop.close()
Я пытался установить ограничение TCPConnector = Нет, но безуспешно.
Я видел, как некоторые люди говорили об использовании asyncio.wait вместо asyncio.gather, но, как и в проблеме 3203, показанной выше, безуспешно.
Я пытался установить ClientSession для каждого запроса, но безуспешно, но это может быть из-за моего непонимания.
Спасибо за ваше руководство.