首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

每日一模块:aiohttp

一、介绍

最近接到一个需求,日常业务升级后需要手动检查各业务线的运行状态,这样非常耗时,因此决定写一个自动巡检的脚本,需要同时处理n个任务,并将结果通过websocket同步给前端展示,经过调研,决定使用aiohttp来处理。aiohttp是一个基于asyncio库的异步HTTP客户端/服务器框架,用于构建高性能的Web应用。它支持HTTP 1.1和WebSockets,并且拥有中间件支持、插件系统以及会话等特性。

二、安装

首先,你需要安装aiohttp。你可以使用pip来安装:

pip install aiohttp

三、基本使用

1. 客户端使用

aiohttp的客户端是异步的,这意味着你可以使用await关键字来等待HTTP请求的结果。

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://python.org')

print(html)

# Python 3.7+

asyncio.run(main())

在上面的代码中,我们首先创建了一个ClientSession,然后使用它来获取一个URL的内容。注意session.get(url)是一个异步上下文管理器,这意味着你可以使用async with语句来自动关闭会话。

2. 服务器使用

aiohttp也可以用来创建Web服务器。以下是一个简单的例子:

from aiohttp import web

async def hello(request):

return web.Response(text="Hello, world")

app = web.Application()

app.add_routes([web.get('/', hello)])

web.run_app(app)

在这个例子中,我们创建了一个Web应用,然后添加了一个路由,该路由在访问根URL时返回"Hello, world"。最后,我们使用web.run_app(app)来运行应用。

四、高级特性

1. 中间件

aiohttp支持中间件,这是一种在请求处理过程中插入自定义逻辑的方式。例如,你可能想记录每个请求的处理时间,或者检查请求的身份验证。

from aiohttp import web

from aiohttp.web_middlewares import middleware

@middleware

async def middleware_handler(request, handler):

# 自定义逻辑

print("Before handler")

response = await handler(request)

print("After handler")

return response

app = web.Application(middlewares=[middleware_handler])

2. 插件

aiohttp支持插件系统,这使得你可以在不修改核心代码的情况下扩展其功能。例如,aiohttp_jinja2是一个允许你在aiohttp应用中使用Jinja2模板的插件。

from aiohttp import web

from aiohttp_jinja2 import setup, render_template

import jinja2

async def init_app(app):

setup(app, loader=jinja2.FileSystemLoader('templates'))

async def index(request):

return render_template('index.html', request, {'message': 'Hello, world!'})

app = web.Application()

app.on_startup.append(init_app)

app.router.add_get('/', index)

web.run_app(app)

3. 会话

aiohttp的客户端支持会话,这允许你在多个请求之间共享cookie和连接。这对于需要登录或保持状态的Web应用非常有用。

4.使用webSocket

五、总结

aiohttp是一个功能强大的异步HTTP客户端/服务器框架,它允许你构建高性能的Web应用。通过使用异步IO和中间件,你可以创建出既高效又灵活的Web服务。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OIsa4ha5jqSGEhXE9FNesz1Q0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券