FastAPI Uvicorn

FastAPI Uvicorn

与Flask框架不同,FastAPI并不包含任何内置的开发服务器。因此,我们需要 Uvicorn。 它实现了 ASGI 标准,速度快如闪电。ASGI是 Asynchronous Server Gateway Interface的缩写。

符合 WSGI (Web Server Gateway Interface – 较早的标准)的Web服务器不适合 asyncio 应用。实现ASGI规范的Python网络框架(如FastAPI)提供高速性能,可与用Node和Go构建的网络应用相媲美。

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 中的任何变化都会自动反映出来,客户端浏览器上的显示也会自动刷新。In addition, the following command-line options may be used −

老号 命令和描述
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] 事件循环的实现。[默认为自动]。
11 --http [auto|h11|httptools] HTTP协议实现。[默认为自动]。
12 --interface auto|asgi|asgi|wsgi 选择应用程序接口。[默认为自动]。
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服务器将以调试模式启动。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程