Uvicorn
Uvicorn 是基于 uvloop 和 httptools 构建的非常快速的 ASGI 服务器
- uvloop 用于替换标准库 asyncio 中的事件循环,非常快(速度 2~4 倍)
- httptools 是 nodejs HTTP 解析器的 Python 实现
- ASGI 服务器 (异步网关协议接口)是Python中的一个标准,用于在异步Python web服务器和应用程序之间建立接口。ASGI 的主要目标是为Python web框架提供一个标准,使其能够处理异步请求、长连接(如WebSockets)、HTTP/2和HTTP/3等。ASGI提供了一个异步的接口,允许web 应用程序运行在异步服务器上,这样可以提高性能,特别是在处理大量并发连接时。
一个简单例子
async def app(scope, receive, send):
assert scope['type'] == 'http'
await send({
'type': 'http.response.start',
'status': 200,
'headers': [
[b'content-type', b'text/plain'],
]
})
await send({
'type': 'http.response.body',
'body': b'Hello, world!',
})
启动 Uvicorn
$ uvicorn example:app
参考资料