闪电般的ASGI服务器
要求:Python 3.6+(要支持Python 3.5,请安装版本0.8.6。)
Uvicorn是一个闪电般的ASGI服务器实现,使用uvloop和httptools
直到最近,Python还缺乏用于异步框架的最低级别的服务器/应用程序接口。这个ASGI specification填补了这一空白,意味着我们现在能够开始构建一组可在所有异步CIO框架中使用的通用工具
Uvicorn目前支持HTTP/1.1和WebSockets。计划支持HTTP/2
快速入门
使用以下方式安装pip
:
$ pip install uvicorn
这将安装具有最小(纯Python)依赖项的uvicorn
$ pip install uvicorn[standard]
这将安装带有“基于Cython的”依赖项(如果可能)和其他“可选的附加项”的uvicorn。
在此上下文中,“基于Cython”的含义如下:
- 事件循环
uvloop
将在可能的情况下安装和使用 - http协议将由
httptools
如果可能的话
此外,“自选额外服务”的意思是:
- WebSocket协议将由
websockets
(您是否要使用wsproto
如果可能,您需要手动安装) - 这个
--reloader
处于开发模式的标志将使用watchgod
- Windows用户将拥有
colorama
为彩色原木安装的 python-dotenv
如果您要使用--env-file
选项PyYAML
将被安装,以允许您提供.yaml
文件到--log-config
,如果需要
创建应用程序,在example.py
:
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 example:app
Uvicorn是BSD licensed代码
在英国布赖顿设计和建造
-🦄-