FastAPI - Uvicorn 服务器

与 Flask 框架不同的是,FastAPI 不包含任何内置的开发服务器。 因此,我们需要Uvicorn。 它实现了 ASGI 标准,而且速度很快。 ASGI 代表异步服务器网关接口

符合 WSGI(Web 服务器网关接口——旧标准)的 Web 服务器不适合 asyncio 应用程序。 实现 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 中的任何更改都会自动反映出来,客户端浏览器上的显示也会自动刷新。 此外,还可以使用以下命令行选项 −

Sr.No 命令 & 描述
1

--host TEXT

将套接字绑定到这个主机。 [默认 127.0.0.1]

2

--port INTEGER

将套接字绑定到这个端口。 [默认 8000]

3

--uds TEXT

绑定到 UNIX 域套接字。

4

--fd INTEGER

从此文件描述符绑定到套接字。

5

--reload

启用自动重新加载。

6

--reload-dir PATH

明确设置重新加载目录,默认当前工作目录。

7

--reload-include TEXT

在查看时包括文件。 默认包含 '*.py'

8

-reload-exclude TEXT

在查看文件时排除。

9

--reload-delay FLOAT

上次检查和下一次检查之间的延迟默认 0.25

10

-loop [auto|asyncio|uvloop]

事件循环实现。 [默认 auto]

11

--http [auto|h11|httptools]

HTTP 协议实现。 [默认 auto]

12

--interface auto|asgi|asgi|wsgi

选择应用程序界面。[默认 auto]

13

--env-file PATH

环境配置文件。

14

--log-config PATH

日志配置文件。 支持的格式 .ini、.json、.yaml。

15

--version

显示uvicorn 版本并退出。

16

--app-dir TEXT

在指定目录下查找APP默认当前目录

17

--help

显示此消息并退出。

除了从命令行启动 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 服务器将因此以调试模式启动。