闪电般的ASGI服务器。
项目描述
一个用于Python的ASGI网络服务器。
Uvicorn是Python的ASGI网络服务器实现。
直到最近,Python一直缺乏用于异步框架的最小级服务器/应用程序接口。ASGI规范填补了这一空白,这意味着我们现在能够开始构建一个适用于所有异步框架的通用工具集。
Uvicorn支持HTTP/1.1和WebSockets。
快速入门
使用pip
安装
$ pip install uvicorn
这将使用最少的(纯Python)依赖项安装uvicorn。
$ pip install 'uvicorn[standard]'
这将使用“基于Cython”的依赖项(如果可能)和其他“可选额外功能”安装uvicorn。
在此上下文中,“基于Cython”意味着以下
- 如果可能,将安装并使用事件循环
uvloop
。 - 如果可能,http协议将由
httptools
处理。
此外,“可选额外功能”意味着以下
- 如果可能,websocket协议将由
websockets
(如果您想使用wsproto
,则需要手动安装它)处理。 - 在开发模式下,使用
--reload
标志将使用watchfiles
。 - Windows用户将安装
colorama
以进行彩色日志。 - 如果您想使用
--env-file
选项,则会安装python-dotenv
。 - 为了允许您向
--log-config
提供一个.yaml
文件,将会安装PyYAML
。
在 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
为什么选择 ASGI?
大多数最成熟的 Python Web 框架最初都是以 WSGI 为基础的。
WSGI 应用程序是一个单一的、同步的可调用对象,它接收一个请求并返回一个响应。这不允许有长连接,例如长轮询 HTTP 或 WebSocket 连接,而 WSGI 并不支持这些。
具有异步并发模型还可以提供轻量级后台任务等选项,并且对于长时间阻塞在网络 I/O 上的端点(如处理缓慢的 HTTP 请求)的限制因素较少。
其他 ASGI 服务器
ASGI 协议的一个优点是它将服务器实现与应用程序框架解耦。这允许形成一个互操作的网络服务器和应用程序框架生态系统。
Daphne
第一个 ASGI 服务器实现,最初是为了支持 Django Channels 而开发的,是 Daphne 网络服务器。
它已在生产中广泛运行,支持 HTTP/1.1、HTTP/2 和 WebSocket。
这里给出的任何示例应用程序都可以使用 daphne
一样运行。
$ pip install daphne
$ daphne app:App
Hypercorn
Hypercorn 最初是 Quart Web 框架的一部分,后来被分离出来成为一个独立的 ASGI 服务器。
Hypercorn 支持 HTTP/1.1、HTTP/2 和 WebSocket。
它还支持 优秀的 trio
异步框架,作为对 asyncio
的替代。
$ pip install hypercorn
$ hypercorn app:App
Mangum
Mangum 是一个适配器,用于使用 ASGI 应用程序与 AWS Lambda 和 API Gateway 一起使用。
Granian
Granian 是一个兼容 ASGI 的 Rust HTTP 服务器,支持 HTTP/2、TLS 和 WebSocket。
Uvicorn 是 BSD 许可证 代码。
精心设计并制作。
— 🦄 —
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分发
构建分发
uvicorn-0.31.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 13bc21373d103859f68fe739608e2eb054a816dea79189bc3ca08ea89a275906 |
|
MD5 | a5b7951b8d9e335fbee8002e9081c108 |
|
BLAKE2b-256 | 0a96ee52d900f8e41cc35eaebfda76f3619c2e45b741f3ee957d6fe32be1b2aa |
uvicorn-0.31.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cac7be4dd4d891c363cd942160a7b02e69150dcbc7a36be04d5f4af4b17c8ced |
|
MD5 | 5e3edb8dc3e6a6c38b7803d5d249918f |
|
BLAKE2b-256 | 0512206aca5442524d16be7702d08b453d7c274c86fd759266b1f709d4ef43ba |