aiohttp 高并发web服务_大型fastapi项目实战 高并发请求神器之aiohttp(上) [建议收藏]...

大型fastapi项目实战 高并发请求神器之aiohttp(上) [建议收藏]

aiohttp介绍及安装

1.背景介绍

在 Python 众多的 HTTP 客户端中,最有名的莫过于 requests、aiohttp 和 httpx。在不借助其他第三方库的情况下,requests 只能发送同步请求;aiohttp 只能发送异步请求;httpx 既能发送同步请求,又能发送异步请求。在并发量大的情况下,如何高效的处理数据,异步是我们的优选,今天我们主要详解的是在生产环境广泛使用的 aiohttp。

2.aiohttp 是什么

aiohttp 是一个为 Python 提供异步HTTP 客户端/服务端编程,基于 asyncio(Python用于支持异步编程的标准库)的异步库。

3.aiohttp 核心功能同时支持客户端使用和服务端使用。

同时支持服务端 WebSockets 组件和客户端 WebSockets 组件,开箱即用。

web 服务器具有中间件,信号组件和可插拔路由的功能。

以下的案例都是基于客户端展开,我们在生产中主要是用 aiohttp 来做客户端用。

4.aiohttp 库安装$ pip install aiohttp

对于更快的客户端 API DNS 解析方案,aiodns 是个很好的选择,极力推荐,$ pip install aiodns

aoihttp 业务核心功能

1. 发起 get 请求

# -*- encoding: utf-8 -*-

import asyncio

import aiohttp

async def main():

async with aiohttp.ClientSession() as session:

async with session.get('http://www.baidu.com') as resp:

print(resp.status)

res = await resp.text()

print(res[:100])

if __name__ == '__main__':

# 注意:

# python3.7+ 支持写法

# asyncio.run(main())

# python3.6及以下版本写法

event_loop = asyncio.get_event_loop()

result = event_loop.run_until_complete(asyncio.gather(main()))

event_loop.close()

2. 发起 post 请求

# -*- encoding: utf-8 -*-

import asyncio

import aiohttp

async def post_v1():

data = b'\x00Binary-data\x00' # 未经编码的数据通过bytes数据上传

data = 'text' # 传递文本数据

data = {'key': 'value'} # 传递form表单

async with aiohttp.ClientSession() as sess:

async with ses

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值