asyncio与aiohttp的面试题

image.png

参考答案:

import aiohttp
import asyncio
from gevent import monkey
monkey.patch_all()

async def request(url):
    print(url)
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as response:
            print(response)

# <并行>
async def main_async():
    # 准备请求列表
    urls = ['http://www.baidu.com', 'http://www.163.com', 'http://www.bing.com']
    # 使用异步IO, 等待三个请求都都完成
    await asyncio.wait([request(url) for url in urls])
    print('结束了')



# 串行
async def main_sync():
    # 依次等待每一个请求
    await request('http://www.baidu.com')
    await request('http://www.163.com')
    await request('http://www.bing.com')
    print('结束了')

if __name__ == '__main__': 
    # loop = asyncio.get_event_loop()
    # loop.run_until_complete(main_sync())

    loop = asyncio.get_event_loop()
    loop.run_until_complete(main_async())

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容