asyncio+aiohttp示例
通过python自带的包asyncio可以实现异步io, 但是由于asyncio只支持TCP请求, 不支持HTTP请求, 所以我们需要对请求进行封装. 调用第三方包aiohttp可以很方便的实现封装.
直接上代码:
1 | #!/usr/bin/env python |
书上写的是通过response = yield from aiohttp.request('GET', url)
进行请求, 但是实际运行会报如下错误:
1 | TypeError: '_SessionRequestContextManager' object is not iterable |
网上查了半天, 发现应该用aiohttp.ClientSession().get
进行下载. 这个函数的作用是保证相关的TCP资源能够得到释放,比如TCP链接.
asyncio+requests示例
通过常用的requests模块也能对请求进行封装, 代码如下
1 | import asyncio |