FastAPI - Uvicorn


与 Flask 框架不同,FastAPI 不包含任何内置开发服务器。因此我们需要Uvicorn。它执行ASGI标准并且速度快如闪电。ASGI 代表异步服务器网关接口

符合WSGI (Web 服务器网关接口 - 旧标准)Web 服务器不适合异步应用程序。实现 ASGI 规范的 Python Web 框架(例如 FastAPI)可提供高速性能,可与使用 Node 和 Go 构建的 Web 应用程序相媲美。

Uvicorn 使用uvloophttptools库。它还提供对 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 服务器因此将以调试模式启动。