Проблема - Я пытаюсь сделать несколько запросов на получение разных URL-адресов, используя asyncio, async_timeout и aiohttp.Я просто хочу выполнить обработку покоя либо после завершения всего запроса на получение, либо по истечении времени ожидания, в зависимости от того, что произойдет раньше.Если все задачи не завершаются в течение указанного периода _DEFAULT_TIME_OUT, то независимо от того, завершен ли запрос get, выполняются только с ними.
В следующем фрагменте кода я всегда жду периода _DEFAULT_TIME_OUT, даже если все мои задачи были выполнены.Как явно разрешить время ожидания.
async def get(self, session, url, attributes):
timeout_period = self._DEFAULT_TIME_OUT)
try:
with async_timeout.timeout(timeout_period) as timeout:
async with session.get(url) as response:
self.urls[url] = await response.content.read()
response.release()
print("---{}---".format(url))
raise asyncio.TimeoutError()
except asyncio.TimeoutError:
pass
async def http_request(self, even_loop):
tasks = []
async with aiohttp.ClientSession(loop=even_loop) as session:
for url in all_urls:
tasks.append(self.get(session, url, attributes))
await asyncio.gather(*tasks)
print("Do something else")