Python Falcon 简明教程

Python Falcon - Uvicorn

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

Falcon 的 ASGI 兼容应用程序在 Uvicorn 服务器上使用以下命令启动:

Uvicorn hellofalcon:app – reload

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

--host TEXT

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

--port INTEGER

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

--uds TEXT

绑定到 UNIX 域套接字。

--fd INTEGER

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

--reload

Enable auto-reload.

--reload-dir PATH

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

--reload-include TEXT

在 watch 时包含文件。默认包含 *.py

--reload-exclude TEXT

在 watch 文件时排除。

--reload-delay FLOAT

前一次和下一次检查之间的延迟(默认 0.25)

--loop [auto

asyncio

uvloop]

事件循环实现。[默认自动]

--http [auto

h11

httptools]

HTTP 协议实现。[默认自动]

--interface auto

asgi

wsgi

选择应用程序接口。[默认自动]

--env-file PATH

Environment configuration file.

--log-config PATH

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

--version

显示 Uvicorn 版本并退出。

--app-dir TEXT

在指定目录(默认当前目录)中查找 APP

--help

显示此消息并退出。

Uvicorn 服务器也可以在程序内部启动,而不是通过上述命令行。要执行该操作,请导入 uvicorn 模块并调用 uvicorn.run() 方法,如下所示 −

import uvicorn
if __name__ == "__main__":
   uvicorn.run("hellofalcon:app", host="0.0.0.0", port=8000, reload=True)

相应地更改 hellofalcon.py 代码,并从命令提示符执行相同操作。可以使用 curl 命令或在浏览器中验证结果,如前所述。