跳转到主要内容

闪电般的ASGI服务器。

项目描述

uvicorn

一个用于Python的ASGI网络服务器。


Build Status Package version Supported Python Version

文档: https://www.uvicorn.org


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 许可证 代码。
精心设计并制作。

— 🦄 —

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

uvicorn-0.31.0.tar.gz (77.1 kB 查看哈希值)

上传时间

构建分发

uvicorn-0.31.0-py3-none-any.whl (63.7 kB 查看哈希值)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面