【发布时间】:2021-07-19 05:54:53
【问题描述】:
有什么方法可以在不终止 HTTP 服务器的情况下关闭数据库连接?
我的代码:
func thisone(w http.ResponseWriter,r *http.Request){
/*connect the db*/
defer database.Close()
/*query the database*/
}
func main(){
http.HandleFunc("/route",thisone)
http.ListenAndServe(":8000",nil)
}
这是在查询数据库后终止程序并停止监听端口 但即使在数据库连接关闭后,我也想继续监听端口。 那么有没有办法做到这一点
谢谢
【问题讨论】:
-
不要关闭数据库。它旨在跨请求同时安全地重用和使用。 Go 的 SQL 包带有很多优化,比如连接池。因此,在您的“服务器”结构中初始化数据库连接 - 并让所有需要它的 http 处理程序(结构方法)使用这个公共数据库。这样他们就不需要为每个请求建立自己的数据库。
-
您使用的是哪个数据库客户端?数据库客户端在连接关闭时终止程序很奇怪。
-
仅供参考:此博客包含许多编写 Web 服务的最佳实践:pace.dev/blog/2018/05/09/…
-
@colm.anseo 感谢您抽出宝贵时间,我会检查一下 :)
标签: mysql database go httpserver