手把手教你部署一个FastAPI服务

本文详细介绍了如何使用FastAPI框架,结合Gunicorn和Uvicorn部署高效Web服务。讲解了FastAPI的特性、Uvicorn的异步优势以及Gunicorn的进程管理功能,阐述了为何在生产环境中推荐使用Gunicorn管理Uvicorn工作进程的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文使用的是FastAPI框架,从这篇文章中可以了解到:

  • 如何配置并将FastAPI应用部署到AIF上
  • 为什么以及何时应该使用 FastAPI、Gunicorn 和 Uvicorn
  • 如何以及为何设置 Gunicorn+Uvicorn 组合作为 ASGI 服务器

目录

一、直接上手

二、前言

三、技术框架介绍

3.1 FastAPI

3.2 Uvicorn

3.3 Gunicorn

3.4 ASGI/WSGI

3.4.1 ASGI

3.4.2 WSGI

3.4.3 对比

四、总结一下


一、直接上手

操作简单一步到位!

from fastapi import FastAPIimport uvicorn
app = FastAPI()


@app.get("/")
async def root():
    return {"message": "Hello World"}

if __name__ == '__main__':
    uvicorn.run(app='main:app', host="127.0.0.1", port=8000, reload=True, debug=True)

启动命令

使用进程管理器确保你以弹性方式运行运行多个进程,你可以执行服务器升级而不会丢弃客户端的请求。

一个进程管理器将会处理套接字设置,启动多个服务器进程,监控进程活动,监听进程重启、关闭等信号。

1. 使用uvicorn 

uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4

Uvicorn 提供一个轻量级的方法来运行多个工作进程,比如 `--workers 4`,但并没有提供进行的监控。

uvicorn 在单进程上使用异步协程是有优势的、但是如果接口方法是同步的则走的多进程模式、也就是 workers 的数量、 这个时候 uvicorn 不如 gunicorn、性能上会有些限制。

2. 使用gunicorn 

gunicorn main:app -b 0.0.0.0:8001 -w 4 -k uvicorn.workers.UvicornWorker  
#  `-w` 表示 worker 数量,`-k` 表示使用的 worker 类型,`-b` 表示绑定的地址和端口。
  • Gunicorn 是成熟的,功能齐全的服务器,可以设定进程的类型,Uvicorn 可以作为 Gunicorn的进程类型
  • Uvicorn 内部包含有 Guicorn 的 workers 类,允许你运行 ASGI 应用程序,这些 workers 继承了所有 Uvicorn 高性能的特点。
  • Guicorn 可以进行进程管理,如果进程死掉会重
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值