推荐答案
在 FastAPI 中,可以使用 yield
关键字创建带有清理操作的依赖项。以下是一个示例代码:
-- -------------------- ---- ------- ---- ------- ------ -------- ------- --- - --------- --- --------- -- - --------- ----------- ---- ----- -- -------- -------------- -------- ------------ ------------------- --- -------------- --- - ----------------- ------ ------ ---
在这个示例中,get_db
函数是一个依赖项,它使用 yield
来提供一个数据库连接。在 yield
之后,finally
块中的代码会在请求处理完成后执行,用于清理资源(例如关闭数据库连接)。
本题详细解读
1. 依赖项的基本概念
在 FastAPI 中,依赖项是一种可以在路径操作函数中注入的函数或类。它们通常用于共享逻辑,如数据库连接、认证等。
2. 使用 yield
创建依赖项
yield
关键字允许你在依赖项中执行一些初始化操作,并在请求处理完成后执行清理操作。这种方式非常适合处理需要资源管理的场景,如数据库连接、文件操作等。
3. 代码解析
get_db
函数是一个依赖项,它使用yield
来提供一个数据库连接。- 在
yield
之前的部分是初始化操作,这里模拟了一个数据库连接。 - 在
yield
之后的部分是清理操作,这里打印了一条消息表示关闭数据库连接。 Depends(get_db)
用于将get_db
依赖项注入到read_items
路径操作函数中。
4. 请求处理流程
- 当请求到达
/items/
路径时,FastAPI 会调用get_db
依赖项。 get_db
函数执行到yield
时,返回数据库连接并暂停执行。read_items
函数使用这个数据库连接进行处理。- 当
read_items
函数执行完毕后,get_db
函数继续执行finally
块中的代码,进行资源清理。
5. 注意事项
- 使用
yield
的依赖项必须是生成器函数。 - 清理操作必须放在
finally
块中,以确保无论请求处理是否成功,清理操作都会执行。
通过这种方式,你可以在 FastAPI 中创建带有清理操作的依赖项,确保资源得到正确管理。