aiohttp 使用教程
时间: 2023-06-10 18:09:13 浏览: 251
python aiohttp的使用详解
aiohttp 是一个基于 asyncio 的异步 HTTP 客户端/服务器框架。它提供了异步 HTTP 请求、响应、WebSocket 和静态文件服务等功能。
以下是 aiohttp 的使用教程:
1. 安装 aiohttp:
可以通过 pip 安装 aiohttp:
```
pip install aiohttp
```
2. 发送 HTTP 请求:
aiohttp 提供了 `ClientSession` 类,可以用来发送 HTTP 请求。
```python
import aiohttp
import asyncio
async def main():
async with aiohttp.ClientSession() as session:
async with session.get('https://www.baidu.com') as response:
print(await response.text())
asyncio.run(main())
```
在上面的例子中,我们创建了一个 `ClientSession` 对象,并使用 `get` 方法发送了一个 GET 请求。最后,我们打印出了响应的内容。
3. 发送 POST 请求:
我们可以使用 `post` 方法发送 POST 请求:
```python
import aiohttp
import asyncio
async def main():
async with aiohttp.ClientSession() as session:
async with session.post('https://httpbin.org/post', data={'key': 'value'}) as response:
print(await response.text())
asyncio.run(main())
```
在上面的例子中,我们使用 `post` 方法发送了一个 POST 请求,请求的数据是一个字典。
4. WebSocket 客户端:
aiohttp 还提供了 WebSocket 客户端功能。我们可以使用 `ClientSession.websocket` 方法创建一个 WebSocket 客户端:
```python
import aiohttp
import asyncio
async def main():
async with aiohttp.ClientSession() as session:
async with session.ws_connect('wss://echo.websocket.org') as ws:
await ws.send_str('Hello, WebSocket!')
async for msg in ws:
if msg.type == aiohttp.WSMsgType.TEXT:
print(msg.data)
elif msg.type == aiohttp.WSMsgType.ERROR:
break
asyncio.run(main())
```
在上面的例子中,我们使用 `ws_connect` 方法创建了一个 WebSocket 客户端,并发送了一条字符串。同时,我们使用异步 for 循环接收服务器返回的消息。
5. 静态文件服务:
aiohttp 还可以用来提供静态文件服务。我们可以使用 `aiohttp.web.StaticFiles` 类创建一个静态文件服务:
```python
from aiohttp import web
app = web.Application()
app.add_routes([web.static('/', '/path/to/static/files')])
web.run_app(app)
```
在上面的代码中,我们创建了一个 `web.Application` 对象,并使用 `add_routes` 方法添加了一个静态文件服务。其中,第一个参数是 URL 前缀,第二个参数是文件系统中静态文件的路径。
以上就是 aiohttp 的使用教程。希望对你有所帮助!
阅读全文