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

我正在编写一个使用 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已经杀死了整个应用程序。我的应用程序的结构是否应该不同?


慕雪6442864
浏览 252回答 2
2回答

慕勒3428872

在这种特殊情况下,我倾向于说您甚至不需要打扰:程序结束时连接将关闭,因此您不会泄漏任何内容。如果你真的需要正确地关闭东西,更简单的选择是使用优雅的服务器,并defer关闭资源。或者,如果您的用例更复杂,请通过捕获信号并以您自己的方式优雅地关闭(例如使用关闭通道)来手动完成。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go