- FastAPI教程
- FastAPI - 主页
- FastAPI - 简介
- FastAPI - 你好世界
- FastAPI-开放API
- FastAPI - Uvicorn
- FastAPI - 类型提示
- FastAPI - IDE 支持
- FastAPI - 休息架构
- FastAPI - 路径参数
- FastAPI - 查询参数
- FastAPI - 参数验证
- FastAPI - Pydantic
- FastAPI - 请求正文
- FastAPI - 模板
- FastAPI - 静态文件
- FastAPI - HTML 表单模板
- FastAPI - 访问表单数据
- FastAPI - 上传文件
- FastAPI - Cookie 参数
- FastAPI - 标头参数
- FastAPI - 响应模型
- FastAPI - 嵌套模型
- FastAPI - 依赖关系
- FastAPI - CORS
- FastAPI - Crud 操作
- FastAPI - SQL 数据库
- FastAPI - 使用 MongoDB
- FastAPI - 使用 GraphQL
- FastAPI - Websocket
- FastAPI - FastAPI 事件处理程序
- FastAPI - 安装子应用程序
- FastAPI - 中间件
- FastAPI - 安装 Flask 应用程序
- FastAPI - 部署
- FastAPI 有用资源
- FastAPI - 快速指南
- FastAPI - 有用的资源
- FastAPI - 讨论
FastAPI - Uvicorn
与 Flask 框架不同,FastAPI 不包含任何内置开发服务器。因此我们需要Uvicorn。它执行ASGI标准并且速度快如闪电。ASGI 代表异步服务器网关接口。
符合WSGI (Web 服务器网关接口 - 旧标准)的Web 服务器不适合异步应用程序。实现 ASGI 规范的 Python Web 框架(例如 FastAPI)可提供高速性能,可与使用 Node 和 Go 构建的 Web 应用程序相媲美。
Uvicorn 使用uvloop和httptools库。它还提供对 HTTP/2 和 WebSockets 的支持,这是 WSGI 无法处理的。uvloop id 类似于内置的asyncio事件循环。httptools库处理 http 协议。
如前所述,Uvicorn 的安装将以最少的依赖关系进行安装。但是,标准安装还将安装基于cython 的依赖项以及其他附加库。
pip3 install uvicorn(standard)
这样,WebSockets协议将得到支持。此外,将安装PyYAML以允许您提供 .yaml 文件。
如前所述,该应用程序是使用以下命令在 Uvicorn 服务器上启动的 -
uvicorn main:app –reload
--reload选项启用调试模式,以便app.py中的任何更改都将自动反映,并且客户端浏览器上的显示将自动刷新。此外,可以使用以下命令行选项 -
先生编号 | 命令与说明 |
---|---|
1 | --主机文本 将套接字绑定到该主机。[默认127.0.0.1] |
2 | --端口整数 将套接字绑定到此端口。[默认8000] |
3 | --uds 文本 绑定到 UNIX 域套接字。 |
4 | --fd 整数 从此文件描述符绑定到套接字。 |
5 | --重新加载 启用自动重新加载。 |
6 | --reload-dir 路径 显式设置重新加载目录,默认当前工作目录。 |
7 | --reload-包含文本 观看时包含文件。默认情况下包含“*.py” |
8 | -重新加载-排除文本 监视文件时排除。 |
9 | --重新加载延迟浮动 上一次检查和下一次检查之间的延迟默认 0.25 |
10 | -loop [自动|异步|uvloop] 事件循环实现。[默认自动] |
11 | --http [自动|h11|httptools] HTTP协议的实现。[默认自动] |
12 | --interface auto|asgi|asgi|wsgi 选择应用程序界面。[默认自动] |
13 | --env-文件路径 环境配置文件。 |
14 | --log-config 路径 记录配置文件。支持的格式 .ini、.json、.yaml。 |
15 | - 版本 显示 uvicorn 版本并退出。 |
16 | --app-dir 文本 在指定目录默认当前目录下查找APP |
17 号 | - 帮助 显示此消息并退出。 |
Uvicorn 服务器也可以通过编程方式启动,而不是从命令行启动。
例子
在 Python 代码中,使用上面列出的任何参数调用uvicorn.run()方法 -
import uvicorn from fastapi import FastAPI app = FastAPI() @app.get("/") async def index(): return {"message": "Hello World"} if __name__ == "__main__": uvicorn.run("main:app", host="127.0.0.1", port=8000, reload=True)
现在将这个app.py作为 Python 脚本运行,如下所示 -
(fastapienv) C:\fastapienv>python app.py
Uvicorn 服务器因此将以调试模式启动。