aiohttp简介及快速使用
程序员文章站
2022-03-25 19:11:30
前言 本文翻译自aiohttp官方文档,如有纰漏,欢迎指出。 aiohttp是一个为Python提供异步HTTP 客户端/服务端编程,基于asyncio(Python用于支持异步编程的标准库)的异步库。 核心功能: 同时支持客户端使用和服务端使用。 同时支持服务端WebSockets组件和客户端We ......
前言
本文翻译自aiohttp官方文档,如有纰漏,欢迎指出。
aiohttp是一个为python提供异步http 客户端/服务端编程,基于asyncio(python用于支持异步编程的标准库)的异步库。
核心功能:
- 同时支持客户端使用和服务端使用。
- 同时支持服务端websockets组件和客户端websockets组件,开箱即用呦。
- web服务器具有中间件,信号组件和可插拔路由的功能。
aiohttp库安装:
pip install aiohttp
你可能还想安装更快的cchardet库来代替chardet进行解码:
pip install cchardet
对于更快的客户端api dns解析方案,aiodns是个很好的选择,极力推荐:
pip install aiodns
快速开始:
客户端例子:
import aiohttp import asyncio import async_timeout async def fetch(session, url): with async_timeout.timeout(10): 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://python.org') print(html) loop = asyncio.get_event_loop() loop.run_until_complete(main())
服务端例子:
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.router.add_get('/', handle) app.router.add_get('/{name}', handle) web.run_app(app)
注意:
这篇文档的所有例子都是利用 async/await 语法来完成的,此语法介绍请看pep 492,此语法仅python 3.5+有效。 如果你使用的是python 3.4, 请将await替换成yield from,将async 替换成带有 @corotine装饰器的def. 比如
async def coro(...): ret = await f()
应替换为:
@asyncio.coroutine def coro(...): ret = yield from f()
下一篇: HTTP与HTTPS介绍
推荐阅读
-
mysql触发器简介、创建触发器及使用限制分析
-
ASP.NET页面进行GZIP压缩优化的几款压缩模块的使用简介及应用测试!(附源码)第1/2页
-
PHP的cURL库简介及使用示例
-
freetds简介、安装、配置及使用介绍
-
使用jQuery快速高效制作网页交互特效——04 第四章JavaScript对象及初识面向对象
-
EXCEL利用数组公式快速计算本月应发工资及使用注意事项
-
Python的SimpleHTTPServer模块用处及使用方法简介
-
aiohttp简介及快速使用
-
解压rpm包的linux命令及rpm命令使用简介
-
ASP.NET页面进行GZIP压缩优化的几款压缩模块的使用简介及应用测试!(附源码)第1/2页