Python Falcon - Uvicorn 服务器
Uvicorn 使用 uvloop 和 httptools 库。 它还提供对 HTTP/2 和 WebSockets 的支持,这是 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 | 启用自动重新加载。 |
--reload-dir PATH | 明确设置重新加载目录,默认当前工作目录。 |
--reload-include TEXT | 在监视时包括文件。 默认包含'*.py' |
--reload-exclude TEXT | 在监视文件时排除。 |
--reload-delay FLOAT | 上次和下一次检查之间的延迟默认0.25 |
--loop [auto|asyncio|uvloop] | 事件循环的实现。[default auto] |
--http [auto|h11|httptools] | HTTP 协议实现。[default auto] |
--interface auto|asgi|wsgi | 选择应用接口。[default auto] |
--env-file PATH | 环境配置文件。 |
--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 命令或在浏览器中验证结果。