FastAPI启动项目的方式

1、Uvicorn启动

Uvicorn 是一个轻量级的 ASGI 服务器,它可以用来直接运行 FastAPI 应用。以下是如何使用 Uvicorn 启动 FastAPI 应用的步骤:

  1. 首先,确保你已经安装了 fastapiuvicorn。如果没有安装,可以通过 pip 安装它们

    pip install fastapi uvicorn
  2. 创建你的 FastAPI 应用。例如,创建一个名为 main.py 的文件,包含你的 FastAPI 应用代码:

    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/")
    def read_root():
        return {"Hello": "World"}
  3. 在命令行中,使用 Uvicorn 运行你的应用:

    uvicorn main:app --reload

2、直接python启动

        修改python代码

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(main:app, host="127.0.0.1", port=8000)

         遇到问题:我部署了一个多模态模型,每次模型加载的速度会很慢,不用api运行模型时大概几秒,使用上面的启动方式时,模型的速度就会需要40多秒。

解决方法:将main:app该为app=app,

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app=app, host="127.0.0.1", port=8000)

使用 app="main:app"

当你使用 app="main:app" 这种格式时,Uvicorn 会尝试按照给定的字符串来导入应用。这里的 "main:app" 意味着 Uvicorn 会在当前目录下查找名为 main.py 的文件,并从中导入名为 app 的对象。这种方式在某些情况下会导致额外的导入延迟,尤其是当你的应用或其依赖项非常复杂时。

使用 app=app

当你直接传递 app=app 时,你实际上是在告诉 Uvicorn 使用当前脚本中已经创建的 app 对象。这种方式避免了额外的导入步骤,因为 app 对象已经在当前的命名空间中可用。这通常会导致更快的启动时间,因为你避免了解析和执行额外的导入语句。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FastAPI 是一种基于 Python 的现代、快速(高性能)、异步框架,用于构建 Web 应用程序和服务。它是由 Starlette 和 Pydantic 这两个库共同支持的核心组件组成,并使用了 Tornado 和 uWSGI 等底层网络库提供高性能。 ### 快速搭建 FastAPI 项目: #### 步骤 1:安装依赖 首先需要安装 FastAPI 及其相关的依赖项。通过 `pip` 安装 FastAPI 及其依赖,命令如下: ```bash pip install fastapi uvicorn[standard] ``` 这里 `uvicorn` 是 FastAPI 默认使用的 WSGI 服务器,通过 `standard` 参数安装可以利用多线程或异步功能。 #### 步骤 2:创建基本结构 创建一个新的文件夹作为你的项目目录,并在其中初始化一个名为 `main.py` 的文件,这是你将编写应用逻辑的主要入口点。同时,在根目录下创建一个 `app` 文件夹存放应用模块,例如: ```bash mkdir my_fastapi_app cd my_fastapi_app touch main.py app/my_routes.py ``` #### 步骤 3:编写应用代码 在 `main.py` 中导入 FastAPI 并创建应用实例: ```python from fastapi import FastAPI app = FastAPI() @app.get("/") async def read_root(): return {"Hello": "World"} ``` 这个例子中最简单的路由处理函数会返回一个 JSON 格式的响应。 #### 步骤 4:添加路由 你可以在这个文件中或者在其他模块中添加更多的路由。比如在 `my_routes.py` 中添加一个用户注册的端点: ```python from fastapi import APIRouter router = APIRouter() @router.post("/users/") async def create_user(user_data: dict): # 这里通常会涉及数据库操作或其他业务逻辑 return {"message": f"User {user_data} created."} # 将路由器附加到主应用上 app.include_router(router) ``` #### 步骤 5:运行应用 使用 `uvicorn` 来启动你的应用: ```bash uvicorn main:app --reload ``` 这条命令会在本地的 `http://localhost:8000` 上运行你的应用。如果你想要访问新添加的用户注册端点,你可以通过浏览器访问 `http://localhost:8000/users/` 并传入数据。 #### 相关问题: 1. **如何配置日志系统** - FastAPI 提供了一个内置的日志框架,允许你轻松地集成外部日志库如 `logging` 或者 `loguru`。 2. **如何使用 FastAPI 与其他服务通信** - 利用 FastAPI 的异步特性,你可以方便地使用 HTTP 客户端(如 `aiohttp`)与其他外部服务进行通信。 3. **如何测试 FastAPI 应用** - 使用 Pytest 结合 FastAPI 自带的测试框架 `fastapi.testclient`,可以帮助你进行单元测试和集成测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值