gpt4 book ai didi

go - 如何仅在golang中有请求时才打开数据库连接

转载 作者:行者123 更新时间:2023-12-01 22:14:59 25 4
gpt4 key购买 nike

所以我要做的是尝试在有http请求时打开db连接,然后再次关闭。我正在使用pgx和gin包,所以这是我的工作:

func handleGetUsers(c *gin.Context) {
connectDB()
data, err := allUsers()
if err != nil {
log.Println(err)
return
}

results := struct {
Count int `json:"count"`
Data []User `json:"data"`
}{
Count: len(data),
Data: data,
}

c.JSON(200, results)
defer connectDB()

}

但是,如果我尝试发出另一个相同的http请求,则数据库连接已经关闭。有什么我可以做的还是我的逻辑毕竟是错误的

最佳答案

可能您的意图很少。

每当您查询服务器的URL时,Web服务器都会执行Go函数。
如果这意味着执行sql请求-将执行该请求并关闭连接。 Web服务器返回结果,并且服务器与客户端之间的通信已结束。

我可以建议一下,因为我相信您想提高gin-gonic性能是在Gin中使用并发数据库查询执行。

    messages := make(chan string)
router.GET("/db_connection",func(c *gin.Context){

c.Copy()

go func(
connectDB()
<-messages
){}()

data, err := allUsers()
if err != nil {
log.Println(err)
return
}

results := struct {
Count int `json:"count"`
Data []User `json:"data"`
}{
Count: len(data),
Data: data,
}

c.JSON(200, results)
go func(
connectDB()
<-messages
){}()




})

关于go - 如何仅在golang中有请求时才打开数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60962581/

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