首页 > 解决方案 > 在 uvicorn 启动时执行脚本并缓存数据

问题描述

我正在使用fastapi构建 RESTful 网络服务。为了运行该服务,我使用uvicorn. 在启动时uvicorn,我想执行我的 python 脚本,它将进行数据库调用并缓存一些数据,以便在uvicorn运行之前可以重用它。我尝试查找uvicorn的文档,但没有找到任何参考。

反正有没有达到我的要求?

标签: pythonpython-3.xfastapiuvicorn

解决方案


使用 FastAPIstartup事件。来自FastAPI 文档

from fastapi import FastAPI

app = FastAPI()

items = {}


@app.on_event("startup")
async def startup_event():
    items["foo"] = {"name": "Fighters"}
    items["bar"] = {"name": "Tenders"}

在这种情况下,启动事件处理函数将 items使用一些值初始化“数据库”(只是一个字典)。

您可以添加多个事件处理函数。

在所有启动事件处理程序完成之前,您的应用程序不会开始接收请求。

(这个功能实际上是在starlette中实现的——FastAPI所基于的ASGI框架)


推荐阅读