- Python Falcon 教程
- Python Falcon - 首页
- Python Falcon - 简介
- Python Falcon - 环境搭建
- Python Falcon - WSGI vs ASGI
- Python Falcon - Hello World(WSGI)
- Python Falcon - Waitress
- Python Falcon - ASGI
- Python Falcon - Uvicorn
- Python Falcon - API 测试工具
- 请求 & 响应
- Python Falcon - 资源类
- Python Falcon - 应用类
- Python Falcon - 路由
- Falcon - 后缀响应器
- Python Falcon - Inspect 模块
- Python Falcon - Jinja2 模板
- Python Falcon - Cookies
- Python Falcon - 状态码
- Python Falcon - 错误处理
- Python Falcon - 钩子
- Python Falcon - 中间件
- Python Falcon - CORS
- Python Falcon - Websocket
- Python Falcon - Sqlalchemy 模型
- Python Falcon - 测试
- Python Falcon - 部署
- Python Falcon 有用资源
- Python Falcon - 快速指南
- Python Falcon - 有用资源
- Python Falcon - 讨论
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] | 事件循环实现。[默认 auto] |
--http [auto|h11|httptools] | HTTP 协议实现。[默认 auto] |
--interface auto|asgi|wsgi | 选择应用程序接口。[默认 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 命令或浏览器验证,如前所述。
广告