生命周期事件
生命周期事件可以允许在Web服务启动和停止前后执行一些初始化和清理任务,生命周期事件响应函数都是通过.listener()
修饰器修饰的普通Python函数,其中响应函数接受两个参数,分别是Sanic
类实例和事件循环实例,而修饰器可以接受一个字符串函数,用于指定响应函数所响应的事件。
Sanic中的生命周期事件有以下四个,可以直接用在修饰器上。
before_server_start
,在Web服务启动之前触发,通常用来初始化数据库连接等。after_server_start
,在Web服务启动之后触发,通常用来启动一些依附于Web服务的其他服务。before_server_stop
,在Web服务即将停止之前触发,通常用来关闭一些需要提前关闭的服务。after_server_stop
,在Web服务停止之后触发,通常用来执行一些后期的清理工作。
这里给出一个启动和关闭数据库连接的示例。
@app.listener("before_server_start)
async def setup_db(app, loop):
app.db = await db_setup()
@app.listener("after_server_stop")
async def close_db(app, loop):
await app.db.close()