gpt4 book ai didi

go - 我应该什么时候关闭这个简单的网络应用程序中的数据库连接?

转载 作者:IT王子 更新时间:2023-10-29 01:12:58 24 4
gpt4 key购买 nike

我正在编写一个使用 PostgreSQL 的简单 Go Web 应用程序。我的 main 函数看起来像

var db *sql.DB

func main() {
var err error
db, err = sql.Open("postgres", "...")
if err != nil {
log.Fatalf("Couldn't connect to the database: %v", err)
}

http.HandleFunc("/whatever", whateverHandler)
http.ListenAndServe("127.0.0.1:8080", nil)
}

似乎我应该在某个时候在数据库连接上调用 Close(),但是什么时候呢?这个应用程序永远服务(即直到我用 ^C 杀死它)。如果我在 ListenAndServe 调用之后放置代码,它不会运行,因为我的 ^C 已经终止了整个应用程序。我的申请应该采用不同的结构吗?

最佳答案

在这种特殊情况下,我倾向于说你甚至不需要费心:连接将在程序结束时关闭,所以你不会泄漏任何东西。

如果你真的需要正确关闭东西,更简单的选择是使用 graceful服务器,并延迟资源关闭。

或者,如果您的用例更复杂,请通过捕获 signals 手动完成并以您自己的方式优雅地关闭(例如使用关闭 channel )。

关于go - 我应该什么时候关闭这个简单的网络应用程序中的数据库连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29063123/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com