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 对象已经在当前的命名空间中可用。这通常会导致更快的启动时间,因为你避免了解析和执行额外的导入语句。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐