【问题标题】:On startup of uvicorn execute script and cache the data在 uvicorn 启动时执行脚本并缓存数据
【发布时间】:2021-11-03 13:27:15
【问题描述】:

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

有没有办法达到我的要求?

【问题讨论】:

    标签: python python-3.x fastapi uvicorn


    【解决方案1】:

    使用 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 框架中实现的)

    【讨论】:

      猜你喜欢
      • 2021-08-15
      • 2018-12-24
      • 2021-10-30
      • 1970-01-01
      • 2017-06-12
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      相关资源
      最近更新 更多