溪客(编程代码) 溪客(编程代码)

  • 今天是2025年08月20日 Wednesday
  • 首页
  • 知识
  • 网址
  • AI助手

Python

首页 / 知识 / Python
  • 基础
    • Conda
    • Jupyter
    • dump
    • CSharp2Python
    • 关于模块导入
    • 关于推导式
    • 关于元组
    • set和数组的区别
    • 关于Literal
    • 关于iter
    • 关于setup.py
    • 路径拼接
    • 方法命名约定
  • 库
    • 其他
    • argparse命令行参数解析
    • asyncio自带异步编程库
    • aiofiles异步文件读写库
    • beautifulsoup4_HTML_XML解析库
    • colorama_在终端输出漂亮的字
    • datasets数据集处理
    • html2text
    • httpx_HTTP请求库
    • litellm
    • loguru日志库
    • numpy科学计算基础库
    • pillow图像处理
    • pydantic数据验证
    • pyyaml
    • requests_HTTP请求库
    • tenacity重试
    • tiktoken计算Token量
    • torch机器学习_深度学习框架
    • tomli TOML文件解析库
    • tomllib 自带TOML文件解析库
    • unidiff_文本_文件差异对比
    • uvicorn_Web服务器
  • langchain
    • langchain-chatchat
    • langchain-qianfan
**uvicorn 是一个基于 Python 的 ASGI 服务器,用于运行基于 ASGI 标准的异步 Web 应用程序,例如使用 FastAPI 或 Starlette 编写的 Web 服务。** --- ## 一、uvicorn 是什么?(简单理解) - uvicorn 是一个 **Web 服务器**,它负责接收 HTTP 请求,把请求交给你的 Python Web 应用程序处理,然后再把应用程序的响应返回给客户端(比如浏览器或 API 调用方)。 - 它专门运行 **ASGI(Asynchronous Server Gateway Interface)** 标准的应用,而不是传统的 WSGI(用于 Flask/Django 等同步框架)。 - uvicorn **性能很高**,因为它底层使用了 **uvloop(一个快速的 asyncio 事件循环)和 httptools(高性能 HTTP 解析器)**。 - 它通常用来运行像 **FastAPI、Starlette** 这样的现代异步 Python Web 框架。 --- ## 二、uvicorn 解决什么问题? 当你用 **FastAPI、Starlette** 等异步 Web 框架写了一个 Web 应用后,**这个应用本身不能直接对外提供 HTTP 服务**,它需要一个 **Web 服务器** 来监听端口、接收请求、并调用你的应用代码。 uvicorn 就是这样一个服务器,它的特点是: | 需求 | uvicorn 的作用 | |------|----------------| | 运行异步 Web 应用(如 FastAPI) | 支持 ASGI 标准,能高效运行异步框架 | | 高并发、高性能 | 基于 asyncio 和 uvloop,性能接近 Node.js 和 Go | | 开发便利 | 支持热重载、自动重载,适合开发和生产部署 | | 轻量级、现代化 | 专为现代 Python 异步生态设计 | --- ## 三、安装 uvicorn 使用 pip 安装: ```bash pip install uvicorn ``` 如果你的项目使用 FastAPI,通常会一并安装: ```bash pip install fastapi uvicorn ``` --- ## 四、uvicorn 基本使用示例 ### 示例:运行一个 FastAPI 应用 假设你有一个 FastAPI 应用,代码保存在 `main.py` 中: ```python # main.py from fastapi import FastAPI app = FastAPI() @app.get("/") def read_root(): return {"message": "Hello, Uvicorn!"} ``` 你可以使用 uvicorn 启动这个应用: ```bash uvicorn main:app --reload ``` 🔍 参数解释: - `main`: 是你的 Python 文件名(不含 `.py`) - `app`: 是 FastAPI 实例的变量名(即 `app = FastAPI()` 中的 `app`) - `--reload`: 开发时使用,代码修改后自动重启服务器(不要用于生产环境) 访问 http://127.0.0.1:8000 就可以看到返回的 JSON 数据。 --- ## 五、uvicorn 常用命令行参数 | 参数 | 说明 | |------|------| | `--host 0.0.0.0` | 监听所有网络接口,允许外部访问 | | `--port 8000` | 指定服务端口,默认是 8000 | | `--reload` | 开发模式,代码变动时自动重启(仅开发用) | | `--workers 4` | 指定工作进程数,用于生产环境多进程运行 | | `--log-level info` | 设置日志级别(debug, info, warning, error, critical) | --- ## 六、生产环境部署 虽然可以直接用 uvicorn 启动服务,但在生产环境中,通常建议: - 使用 **uvicorn + Gunicorn**(Gunicorn 作为进程管理,uvicorn 作为 worker) - 或者使用 **uvicorn 自身多 worker 模式**(如 `--workers 4`) - 结合 **Nginx** 做反向代理和负载均衡 例如,使用 Gunicorn 启动多个 uvicorn worker: ```bash gunicorn -k uvicorn.workers.UvicornWorker main:app ``` --- ## 七、总结(中文) > **uvicorn 是一个高性能的 ASGI 服务器,用于运行现代化的异步 Python Web 应用(如 FastAPI、Starlette)。它基于 asyncio 和 uvloop,具有出色的性能表现,支持开发模式热重载,广泛用于开发和生产环境。** --- ✅ **简单来说:** > 如果你用 **FastAPI** 或其它 ASGI 框架写 Web 应用,**uvicorn 就是你用来启动和运行这个应用的 Web 服务器,它让您的应用可以通过 HTTP 提供服务,支持高并发,非常适合现代 Python Web 开发。**
© 2022 - 溪客(编程代码) - 粤ICP备10217501号 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)