【发布时间】:2021-11-03 13:27:15
【问题描述】:
我正在使用fastapi 构建一个 RESTful 网络服务。为了运行该服务,我使用uvicorn。在uvicorn 启动时,我想执行我的python 脚本,该脚本将进行数据库调用并缓存一些数据,以便在uvicorn 运行之前可以重用它。我尝试查找uvicorn的文档,但没有找到任何参考。
有没有办法达到我的要求?
【问题讨论】:
标签: python python-3.x fastapi uvicorn
我正在使用fastapi 构建一个 RESTful 网络服务。为了运行该服务,我使用uvicorn。在uvicorn 启动时,我想执行我的python 脚本,该脚本将进行数据库调用并缓存一些数据,以便在uvicorn 运行之前可以重用它。我尝试查找uvicorn的文档,但没有找到任何参考。
有没有办法达到我的要求?
【问题讨论】:
标签: python python-3.x fastapi uvicorn
使用 FastAPI startup 事件。来自FastAPI docs:
from fastapi import FastAPI app = FastAPI() items = {} @app.on_event("startup") async def startup_event(): items["foo"] = {"name": "Fighters"} items["bar"] = {"name": "Tenders"}在这种情况下,启动事件处理函数将初始化
items"database" (只是一个字典) 有一些值。您可以添加多个事件处理函数。
并且您的应用程序将不会开始接收请求,直到所有 启动事件处理程序已完成。
(这个功能实际上是在starlette——FastAPI 所建立的ASGI 框架中实现的)
【讨论】: