Ответы пользователя по тегу AIOHTTP
  • Как получить переменную data после исполнения асинхронной функции?

    igorzakhar
    @igorzakhar
    Сессии нужно закрывать.
    +
    Don’t create a session per request. Most likely you need a session per application which performs all requests altogether.


    Набросал на коленке:
    import asyncio
    import aiohttp
    
    
    async def call_url(url, session):
        print('Starting {}'.format(url))
        async with session.get(url) as response:
            response = await session.get(url)
            data = await response.text()
            print('{}: {} bytes: {}'.format(url, len(data), data))
            return data
    
    
    async def run(urls):
        async with aiohttp.ClientSession() as session:
            futures = [call_url(url, session) for url in urls]
            result = await asyncio.gather(*futures)
            return result
    
    if __name__ == '__main__':
        urls = ['http://www.google.com',
                'http://www.yandex.ru', 'http://www.python.org']
        ioloop = asyncio.get_event_loop()
        data = ioloop.run_until_complete(run(urls))
        print(data)
        ioloop.close()
    Ответ написан
    Комментировать