跳轉至

Unfazed Lifespan

lifespan 协议是一种与 ASGI 服务器通信的方式,用于启动和停止应用程序。在 unfazed 中,可以通过编写 on_startupon_shutdown 方法来实现在应用程序的启动和停止的过程中做一些额外的工作。比如初始化数据库连接、关闭数据库连接等。

快速开始

编写一个简单的 lifespan 类。

1、创建一个新 lifespan 类


from unfazed.lifespan import BaseLifespan

class YourLifespan(BaseLifespan):

    async def on_startup(self):
        print("on_startup")

    async def on_shutdown(self):
        print("on_shutdown")

2、在 unfazed 中使用


# settings.py

UNFAZED_SETTINGS = {
    "LIFESPAN": ["yourmodule.YourLifespan"]
}

3、启动 unfazed


>>> python manage.py runserver
# on_startup

高级

lifespan 除了可以在启动和停止时做一些工作外,还可以携带信息到每个 request 中。


from unfazed.lifespan import BaseLifespan

class YourLifespan(BaseLifespan):

    def __init__(self):
        super().__init__()
        self.conn = None

    async def on_startup(self):
        self.conn = await db_connect()

    async def on_shutdown(self):
        await self.conn.close()

    @property
    def state(self):
        return {"db_conn": self.conn}

在 settings.py 中配置完成之后,便可以在 endpoints 中的视图函数获取到这个信息。


from unfazed.http import HttpRequest, HttpResponse

async def your_view(request: HttpRequest) -> HttpResponse:

    db_conn = request.state.db_conn

    # do something with db_conn
    return HttpResponse("ok")