python - 在 uvicorn 启动时执行脚本并缓存数据
问题描述
我正在使用fastapi
构建 RESTful 网络服务。为了运行该服务,我使用uvicorn
. 在启动时uvicorn
,我想执行我的 python 脚本,它将进行数据库调用并缓存一些数据,以便在uvicorn
运行之前可以重用它。我尝试查找uvicorn的文档,但没有找到任何参考。
反正有没有达到我的要求?
解决方案
使用 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框架)
推荐阅读
- html - Manifest.json 在 html 中的重要性
- java - 尝试在 Java 中实现互斥和同步
- flutter - 如何在颤动中将字符串中的一个小时(不是日期)从 UTC 转换为本地时间?
- javascript - 将数据库中的值放入选择下拉 javascript
- r - 如何在数据框列表上应用函数?
- html - 使用 Bootstrap 4 Grid 创建动态和固定宽度的列结构
- google-sheets - 谷歌电子表格更改年份然后表格自动清除
- oracle - 我想在 oracle 中使等待查询超时
- react-native - React Native 中的 JS 线程的 fps 较低
- javascript - 带有 javascript 的 br 显示为 HTMLBRElement