<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Aiohttp on My Blog</title><link>/tags/aiohttp/</link><description>Recent content in Aiohttp on My Blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 30 Jan 2019 00:00:00 +0000</lastBuildDate><atom:link href="/tags/aiohttp/index.xml" rel="self" type="application/rss+xml"/><item><title>aiohttp框架及其常用模块</title><link>/2019/01/30/aiohttp%E6%A1%86%E6%9E%B6%E5%8F%8A%E5%85%B6%E5%B8%B8%E7%94%A8%E6%A8%A1%E5%9D%97/</link><pubDate>Wed, 30 Jan 2019 00:00:00 +0000</pubDate><guid>/2019/01/30/aiohttp%E6%A1%86%E6%9E%B6%E5%8F%8A%E5%85%B6%E5%B8%B8%E7%94%A8%E6%A8%A1%E5%9D%97/</guid><description>&lt;!-- toc --&gt;
&lt;p&gt;[TOC]&lt;/p&gt;
&lt;h1 id="简介"&gt;简介&lt;/h1&gt;
&lt;p&gt;aiohttp是一个为Python提供异步HTTP 客户端/服务端编程，基于asyncio的异步库。他的核心功能如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同时支持客户端使用(可以理解为request的异步执行方式)和服务端使用。&lt;/li&gt;
&lt;li&gt;同时支持服务端WebSockets组件和客户端WebSockets组件，开箱即用呦。&lt;/li&gt;
&lt;li&gt;web服务器具有中间件，信号组件和可插拔路由的功能。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个可插拔的路由意思就是说，你可以在代码运行的过程中增加某个接口，或者减少某个接口。&lt;/p&gt;
&lt;p&gt;安装方式：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;pip install aiohttp
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;客户端例子:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;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, &amp;#39;http://python.org&amp;#39;)
print(html)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;服务端例子:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;from aiohttp import web
async def handle(request):
name = request.match_info.get(&amp;#39;name&amp;#39;, &amp;#34;Anonymous&amp;#34;)
text = &amp;#34;Hello, &amp;#34; + name
return web.Response(text=text)
app = web.Application()
app.router.add_get(&amp;#39;/&amp;#39;, handle)
app.router.add_get(&amp;#39;/{name}&amp;#39;, handle)
web.run_app(app)
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id="常见扩展模块"&gt;常见扩展模块&lt;/h1&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;模块名称&lt;/th&gt;
&lt;th&gt;描述&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;aiohttp_session&lt;/td&gt;
&lt;td&gt;处理用户会话&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;aiohttp-session-mongo&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;aiomysql&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;aiopg&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;aioredis&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;aiohttp_cors&lt;/td&gt;
&lt;td&gt;解决跨域问题&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;aiojobs&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;aiohttp_jinja2&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;aiobotocore&lt;/td&gt;
&lt;td&gt;aws文件存储服务器的异步模块&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pytest-aiohttp&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;aiohttp-swagger3&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;aioelasticsearch&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;aiologstash&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;aiokafka&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;更多可以去aio-libs github官方仓库查看 &lt;a href="https://github.com/aio-libs"&gt;https://github.com/aio-libs&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>