相关技术
- Uvicorn
- 采用 uvloop(一个高效的事件循环库)和 httptools(一个高性能的 HTTP 解析库),因此在 IO 密集型 的应用中性能非常出色
- 更专注于高性能异步,尤其是单节点应用。
- Hypercorn
- 可以使用 asyncio、trio 或 curio 作为其事件循环库,允许开发者根据需要选择不同的异步实现。
- 相对来说更加灵活,适合需要支持不同异步模式的场景,如 trio 用户
- 多协议支持(包括 HTTP/2、HTTP/3 和 WebSocket)使其适合需要多协议支持的应用。
- 性能
- Uvicorn:
- 基于 uvloop 和 httptools,优化了网络 I/O 操作,通常在性能和响应速度上稍占优势,尤其是在低延迟和高并发的场景下
- 是目前最快的异步 Web 服务器之一,特别适用于需要大量并发连接的应用
- Hypercorn:
- 虽然性能不错,但由于支持更多协议(如 HTTP/2、HTTP/3 等),它的性能通常略低于 uvicorn,尤其是在非常高并发的负载下
- 适合需要灵活性和多协议支持的应用,但如果对性能要求极高,uvicorn 会更具优势
- flask
- flask 的 app.run(debug=True)会启动 werkzeug 的重载模式,设置信号量 signal.signal,而 python 无法在主线程之外使用信号量,故不能用 debug
FastAPI 启动
- 创建实例,禁用文档页
- 注册所有后端路由
- 设置异常捕获
- 页面
- 主页挂载 vue
- 设置图标
- 测试页
- 挂载 vue 其他页面
- 启动 fastapi,监听 0.0.0.0:5922