FastApi教程|事件:启动-关闭

发表时间:2020-03-09

您可以定义在应用程序启动之前或关闭应用程序时需要执行的事件处理程序(函数)。

这些函数可以用 async def 或normal 声明 def

startup 事件

要添加应在应用程序启动之前运行的功能,请使用事件声明它 "startup"

from fastapi import FastAPI

app = FastAPI()

items = {}


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


@app.get("/items/{item_id}")
async def read_items(item_id: str):
    return items[item_id]

在这种情况下, startup 事件处理程序函数将 dict 使用一些值 初始化项目“数据库”(只是一个 )。

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

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

shutdown 事件

要添加应在应用程序关闭时运行的功能,请使用事件声明它 "shutdown"

from fastapi import FastAPI

app = FastAPI()


@app.on_event("shutdown")
def shutdown_event():
    with open("log.txt", mode="a") as log:
        log.write("Application shutdown")


@app.get("/items/")
async def read_items():
    return [{"name": "Foo"}]

在这里, shutdown 事件处理函数将文本行写入 "Application shutdown" file log.txt

信息

在该 open() 函数中,其 mode="a" 含义为“追加”,因此,该行将在该文件上的内容之后添加,而不会覆盖之前的内容。

小费

请注意,在这种情况下,我们使用了 open() 与文件交互 的标准Python 函数。

因此,它涉及I / O(输入/输出),这需要“等待”将内容写入磁盘。

open() 不使用 async await

因此,我们使用标准 def 而不是 声明事件处理函数 async def

信息

您可以在 Starlette's Events'docs中 阅读有关这些事件处理程序的更多信息 。

文章来源互联网,如有侵权,请联系管理员删除。邮箱:417803890@qq.com / QQ:417803890

微配音

Python Free

邮箱:417803890@qq.com
QQ:417803890

皖ICP备19001818号
© 2019 copyright www.pythonf.cn - All rights reserved

微信扫一扫关注公众号:

联系方式

Python Free