跳到主要内容

后端服务

相关技术

  • 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