在 app.on_event('startup') 中连接到数据库与在 FastAPI 中的依赖项之间的区别
Posted
技术标签:
【中文标题】在 app.on_event(\'startup\') 中连接到数据库与在 FastAPI 中的依赖项之间的区别【英文标题】:Difference between connecting to the database in app.on_event('startup') vs in a dependency in FastAPI在 app.on_event('startup') 中连接到数据库与在 FastAPI 中的依赖项之间的区别 【发布时间】:2021-05-05 15:10:12 【问题描述】:在 Tiangolo 的 FastAPI 中,它声明您可以使用依赖项创建持久的数据库连接
https://fastapi.tiangolo.com/tutorial/sql-databases/#create-a-dependency
但是,在异步数据库文档中,数据库是在应用启动时连接的
https://fastapi.tiangolo.com/advanced/async-sql-databases/#connect-and-disconnect
在编码/数据库文档中遵循相同的模式
https://www.encode.io/databases/connections_and_transactions/
哪个是正确的模式?在我看来,使用依赖项,每个 API 调用将创建一个数据库连接,而在启动期间连接数据库将为每个工作人员建立一个数据库连接。如果这是正确的,那么在启动时连接到数据库会更好。
两者有什么区别,哪一个更好?
【问题讨论】:
【参考方案1】:我不会详细介绍每个数据库库。我只想说,大多数现代工具都使用连接池。他们显式或隐式地这样做,隐藏在您的第一个链接中的 Session
等某些抽象后面。
在您的所有示例中,连接池都是在应用程序启动时创建的。并且在创建session
时,并没有建立新连接的繁重操作,只是从池中取出一个连接,当会话关闭时,将连接返回池中。
【讨论】:
以上是关于在 app.on_event('startup') 中连接到数据库与在 FastAPI 中的依赖项之间的区别的主要内容,如果未能解决你的问题,请参考以下文章
startup ‘startup‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
tomcat启动时startup.bat一闪而过,在startup.bat文档后边加pause之后,出现一个界面,这种怎么解决?
json 请在此处查看完整的启动矩阵:https://github.com/startup-matrix/startup-matrix