成都网站建设网络,房地产信息网上查询系统,wordpress 数据库连接错误,小学生关键词大全Uvicorn 是一个为 Python 设计的 ASGI#xff08;异步服务器网关接口#xff09;Web 服务器。它填补了 Python 在异步框架中缺乏一个最小化低层次服务器/应用接口的空白。Uvicorn 支持 HTTP/1.1 和 WebSockets#xff0c;是构建现代异步Web应用的强大工具。 ⭕️宇宙起点 异步服务器网关接口Web 服务器。它填补了 Python 在异步框架中缺乏一个最小化低层次服务器/应用接口的空白。Uvicorn 支持 HTTP/1.1 和 WebSockets是构建现代异步Web应用的强大工具。 ⭕️宇宙起点 什么是 Uvicorn Uvicorn 的主要功能和特性 Uvicorn 的常用启动参数♨️ 示例使用 uvicorn.run 启动 ASGI 应用⚙️ 运行 Uvicorn 的高级配置 使用 Gunicorn 部署 Uvicorn 下载地址 结语 参考文献 什么是 Uvicorn Uvicorn 是一个轻量级、高性能的 ASGIAsynchronous Server Gateway Interface 服务器专为支持 Python 异步框架如 FastAPI 和 Starlette而设计。与传统的 WSGI 服务器如 Gunicorn不同Uvicorn 旨在提供对异步 Web 框架的完全支持并在性能和灵活性方面进行了大量优化。 Uvicorn 的主要功能和特性
高性能Uvicorn 使用 uvloop 作为默认的事件循环和 httptools 进行 HTTP 解析因此比传统的 Python 服务器更快。支持多种协议支持 HTTP 和 WebSocket 协议并可配置 ASGI 2 或 ASGI 3 接口。配置灵活支持通过命令行参数、环境变量或配置文件进行详细的服务器配置。 Uvicorn 的常用启动参数
在使用 Uvicorn 启动 ASGI 应用时通常通过命令行传递各种参数以控制其行为。下面列出了几个常用的启动参数及其用途
参数作用示例--host指定绑定的主机地址--host 127.0.0.1--port指定端口号--port 8000--workers指定工作进程数--workers 4--reload启用自动重载在开发时自动检测文件变动并重启服务器--reload--log-level日志等级info、debug、error--log-level debug--ssl-keyfileSSL 密钥文件路径--ssl-keyfile ./path/to/key.pem--ssl-certfileSSL 证书文件路径--ssl-certfile ./path/to/cert.pem--backlog设置连接请求的最大等待队列数--backlog 2048--limit-max-requests限制单个进程在重启前可处理的最大请求数--limit-max-requests 1000
这些参数可以灵活地组合使用根据需要配置 Uvicorn 的运行行为。特别是对于生产环境可以搭配 --workers 参数来启动多个进程提高并发处理能力。 ♨️ 示例使用 uvicorn.run 启动 ASGI 应用
Uvicorn 既可以从命令行启动也可以通过 Python 代码进行启动。以下是几种不同的启动方式
1使用 uvicorn.run() 启动
import uvicornasync def app(scope, receive, send):assert scope[type] httpawait send({type: http.response.start,status: 200,headers: [[bcontent-type, btext/plain],],})await send({type: http.response.body,body: bHello, Uvicorn!,})if __name__ __main__:uvicorn.run(main:app, host127.0.0.1, port5000, log_levelinfo)2使用 Config 和 Server 实例
当需要更细粒度的控制时可以使用 Config 和 Server 实例
import uvicornasync def app(scope, receive, send):assert scope[type] httpawait send({type: http.response.start,status: 200,headers: [[bcontent-type, btext/plain],],})await send({type: http.response.body,body: bHello, Uvicorn!,})if __name__ __main__:config uvicorn.Config(main:app, host127.0.0.1, port5000, log_levelinfo)server uvicorn.Server(config)server.run()3异步环境中启动 Uvicorn
如果要在已有的异步事件循环中启动可以使用 uvicorn.Server.serve()
import asyncio
import uvicornasync def app(scope, receive, send):assert scope[type] httpawait send({type: http.response.start,status: 200,headers: [[bcontent-type, btext/plain],],})await send({type: http.response.body,body: bHello, Uvicorn!,})async def main():config uvicorn.Config(main:app, host127.0.0.1, port5000, log_levelinfo)server uvicorn.Server(config)await server.serve()if __name__ __main__:asyncio.run(main())⚙️ 运行 Uvicorn 的高级配置
Uvicorn 提供了多种高级配置选项来满足不同应用的需求包括 HTTP 流量控制、SSL 设置、资源限制等。常用配置如下
配置选项描述默认值--limit-concurrency限制最大并发连接数超出时返回 HTTP 503None--timeout-keep-aliveKeep-Alive 超时时间超过该时间未收到请求则断开连接5--timeout-graceful-shutdown优雅关闭服务器的最大等待时间None--ssl-versionSSL 协议版本参考标准库 ssl 模块17--log-config日志配置文件路径None--ws-ping-intervalWebSocket 心跳包发送间隔时间20.0--ws-ping-timeoutWebSocket 心跳包超时时间20.0
这些参数可以在开发和生产环境中进行不同的调整以提升服务器的响应速度和安全性。 使用 Gunicorn 部署 Uvicorn
在生产环境中通常推荐使用 Gunicorn 搭配 Uvicorn 的工作进程模式来部署。这样可以充分利用多进程的优势并且享有 Gunicorn 稳定的进程管理功能。
gunicorn -w 4 -k uvicorn.workers.UvicornWorker example:app此命令会启动 4 个工作进程并使用 UvicornWorker 管理 ASGI 应用的多进程环境。 下载地址 Uvicorn 最新版 下载地址 结语
Uvicorn 是一个功能强大、配置灵活且易于使用的异步 Web 服务器非常适合现代 Python 异步框架的开发和部署。通过合理配置和结合 Gunicorn可以充分利用其高性能和稳定性来处理各种 Web 请求。 参考文献
Uvicorn 官网Uvicorn GitHub仓库