Fastapi 简明教程

FastAPI - Uvicorn

与 Flask 框架不同,FastAPI 不包含任何内置开发服务器。因此我们需要 Uvicorn 。它实现了 ASGI 标准且非常快。ASGI 代表 Asynchronous Server Gateway Interface

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

Uvicorn 使用 uvloophttptools 库。它还提供对 WSGI 无法处理的 HTTP/2 和 WebSocket 的支持。 uvloop 类似于内置的 asyncio 事件循环。 httptools 库处理 http 协议。

如前所述,Uvicorn 的安装将以最少的依赖项进行安装。但是,标准安装还将安装基于 cython 的依赖项以及其他附加库。

pip3 install uvicorn(standard)

使用此方法将会支持 WebSockets 协议。另外,将会安装 PyYAML ,以便您提供一个 .yaml 文件。

如前所述,应用程序使用以下命令在 Uvicorn 服务器上启动 −

uvicorn main:app –reload

--reload 选项启用调试模式,以便*app.py*的任何更改将自动反映,并且客户端浏览器上的显示将自动刷新。此外,可以使用以下命令行选项 −

Sr.No

Command & Description

1

--host TEXT 将套接字绑定到此主机。[默认 127.0.0.1]

2

--port INTEGER 将套接字绑定到此端口。[默认 8000]

3

--uds TEXT 绑定到 UNIX 域套接字。

4

--fd INTEGER 从该文件描述符绑定到套接字。

5

--reload Enable auto-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]*事件循环实现。[默认值为自动]

11

*--http [auto

h11

httptools]*HTTP 协议实现。[默认值为自动]

12

*--interface auto

asgi

asgi

wsgi*选择应用程序界面。[默认值为自动]

13

--env-file PATH Environment configuration file.

14

--log-config PATH 日志记录配置文件。支持以下格式:.ini、.json、.yaml。

15

--version 显示 uvicorn 版本并退出。

16

--app-dir TEXT 在指定的目录查找 APP,默认值为当前目录

17

除了从命令行启动 Uvicorn 服务器外,还可以通过编程方式启动它。

Example

在 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)

现在作为 Python 脚本运行此 app.py ,如下所示 −

(fastapienv) C:\fastapienv>python app.py

Uvicorn 服务器将以调试模式启动。