Fastapi 简明教程
FastAPI - Uvicorn
与 Flask 框架不同,FastAPI 不包含任何内置开发服务器。因此我们需要 Uvicorn 。它实现了 ASGI 标准且非常快。ASGI 代表 Asynchronous Server Gateway Interface 。
符合 WSGI (Web 服务器网关接口——旧标准)的 Web 服务器不适用于 asyncio 应用程序。实现 ASGI 规范的 Python Web 框架(如 FastAPI)提供高速性能,可与使用 Node 和 Go 构建的 Web 应用程序相媲美。
Uvicorn 使用 uvloop 和 httptools 库。它还提供对 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 服务器将以调试模式启动。