原来今天是清明节啊,自从大学开始已经好几年清明节,中秋节没回家了,感觉没多大意思了,不知道是书读得越多,越没有人情味,还是这些都太麻烦了,还是已经都没有小时候那种感觉了,哎,大事终会过去,凡事看开,无法解决就去承受,变得坚韧,不要抱怨,以后可能会连家乡这个概念也会越来越模糊了,甚至直至消失不见了,悲哀啊
aiohttp是一个为Python提供异步HTTP 客户端/服务端编程,基于asyncio(Python用于支持异步编程的标准库)的异步库
核心功能:
1. 同时支持客户端使用和服务端使用
2. 同时支持服务端WebSockets组件和客户端WebSockets组件,开箱即用
3. web服务器具有中间件,信号组件和可插拔路由的功能
aiohttp库安装:
$ pip install aiohttp
你可能还想安装更快的cchardet库来代替chardet进行解码:
$ pip install cchardet
对于更快的客户端API DNS解析方案,aiodns是个很好的选择,极力推荐:
$ pip install aiodns
客户端:
import aiohttp
import asyncio
async def fetch(session, url):
async with session.get(url) as response:
return await response.text()
async def main():
async with aiohttp.ClientSession() as session:
html = await fetch(session, "http://httpbin.org/headers")
print(html)
asyncio.run(main())
"""输出结果:
{
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Host": "httpbin.org",
"User-Agent": "Python/3.7 aiohttp/3.6.2"
}
}
"""
这个代码是不是很简单,一个函数用来发起请求,另外一个函数用来下载网页
服务器端
from aiohttp import web
async def handle(request):
name = request.match_info.get('name', "Anonymous")
text = "Hello, " + name
return web.Response(text=text)
app = web.Application()
app.add_routes([web.get('/', handle),
web.get('/{name}', handle)])
if __name__ == '__main__':
web.run_app(app)
运行这个代码,然后访问http://127.0.0.1:8080就可以看到你的网站了,很 基础的一个网页,你可以在后面跟上你的名字