from contextlib import asynccontextmanager
from fastapi import FastAPI
def fake_answer_to_everything_ml_model(x: float):
return True
ml_models = {}
@asynccontextmanager
async def lifespan(app: FastAPI):
# Load your ML model
ml_models["answer_to_everything"] = fake_answer_to_everything_ml_model
yield
# If you want you can define your shutdown logic after the `yield` keyword.
app = FastAPI(lifespan=lifespan)
1条答案
按热度按时间zxlwwiss1#
是的,这是可以实现的!在这两个解决方案中,FastAPI将不会开始服务请求,直到启动逻辑(在您的情况下,加载一个ML模型)完成。
实际上,在启动逻辑完成之前,应用不会开始侦听所选端口,并且由于您在Google Cloud Run平台上运行应用,因此在此之前,应用不会向您的应用提供流量。
如果您使用的FastAPI版本〈
0.93.0
:您应该在“启动事件处理程序”中加载您的模型。例如:
如果您使用的FastAPI版本〉=
0.93.0
:您应该使用FastAPI应用程序的lifetime参数定义启动逻辑。更全面的文档可以在here中找到,我只展示一个最小的示例: