云计算百科
云计算领域专业知识百科平台

ASGI 服务器Uvicorn介绍

一、Uvicorn 是什么?

  • ASGI 服务器:用于运行异步 Web 应用。对比传统的 WSGI 服务器,比如 Gunicorn,Uvicorn 支持异步操作,适合 FastAPI 或 Starlette 这样的框架; 简言之,Uvicorn 是专为异步 Python Web 框架(如 FastAPI、Starlette)设计的高性能服务器。
  • 核心特性:
    • 支持 HTTP/1.1 和 WebSocket。
    • 基于 uvloop 和 httptools 实现高效 I/O 处理。
    • 轻量级,适合开发和部署异步应用。

二、安装 Uvicorn

1. 基础安装

pip install uvicorn

2. 安装性能优化版(推荐)

包含 uvloophttptools 依赖:

pip install uvicorn[standard]

三、快速启动 FastAPI 应用

1. 示例代码(main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def home():
return {"message": "Hello World"}

2. 启动命令

uvicorn main:app –host 0.0.0.0 –port 8000 –reload

  • 参数解析:
    • main:appmain.py 文件中的 app 实例。
    • –host 0.0.0.0:允许所有 IP 访问。
    • –port 8000:监听端口号。
    • –reload:代码修改后自动重启(仅用于开发环境)。

四、常用命令行参数

参数

说明

–host

绑定主机地址(默认127.0.0.1)

–port

监听端口(默认8000)

–workers

工作进程数(多进程模式,需关闭–reload)

–reload

开发模式下自动重载代码

–log-level

日志级别(debug/info/warning/error/critical)

–timeout-keep-alive

保持连接超时时间(秒,默认5)

–ssl-keyfile

SSL 私钥文件路径(启用 HTTPS)

–ssl-certfile

SSL 证书文件路径(启用 HTTPS)

五、生产环境部署

1. 单进程运行

uvicorn main:app –host 0.0.0.0 –port 8000

2. 多进程运行(结合 Gunicorn)

pip install gunicorn

gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app

  • 参数解析:
    • -w 4:启动 4 个工作进程(通常设为 CPU 核心数 × 2 + 1)。
    • -k uvicorn.workers.UvicornWorker:指定 Uvicorn 工作器。
3. 使用 HTTPS

uvicorn main:app –ssl-keyfile key.pem –ssl-certfile cert.pem

六、性能调优

1. 超时设置

# 减少空闲连接占用

uvicorn main:app –timeout-keep-alive 10

2. 调整日志级别

# 生产环境关闭 debug 日志

uvicorn main:app –log-level warning

3. 启用多核 CPU

uvicorn main:app –workers 4

七、常见问题解决

1. 端口冲突

Error: [Errno 98] Address already in use

  • 解决方案:更换端口 –port 8001 或终止占用进程:

     

    lsof -i :8000

    kill -9 <PID>

2. 模块导入错误

Error: No module named 'main'

  • 解决方案:检查文件路径和变量名,确保 main:app 指向正确的模块和应用实例。
3. SSL 证书错误

SSL error: [SSL] PEM lib (_ssl.c:4013)

  • 解决方案:确保证书和私钥文件路径正确且格式为 PEM。

八、总结

  • 开发环境:使用 –reload 实时调试。
  • 生产环境:
    • 多进程模式(–workers 或 Gunicorn + Uvicorn)。
    • 启用 HTTPS(–ssl-keyfile –ssl-certfile)。
    • 调整超时和日志级别优化性能。
赞(0)
未经允许不得转载:网硕互联帮助中心 » ASGI 服务器Uvicorn介绍
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!